ftp文件下載完整代碼

 1 <?php
 2 function logFtpDownload($filename){
 3     $phpftp_host = "host"; //服務器地址
 4     $phpftp_port = port; //服務器的端口號
 5     $phpftp_user = "username";       // 用戶名
 6     $phpftp_passwd = "password; //口令
 7     $ftp_path = dirname($filename) . "/"; //獲取路經
 8     $select_file = basename($filename); //獲取文件名
 9     $ftp = ftp_connect($phpftp_host,$phpftp_port); //鏈接FTP服務器
10     if($ftp){
11         if(ftp_login($ftp, $phpftp_user, $phpftp_passwd)){ //登錄
12             if(@ftp_chdir($ftp,$ftp_path)){  //進入指定路徑
13                 $tmpfile = tempnam( getcwd()."/", "temp" ); //建惟一的臨時文件 此目錄要有讀的權限,或者更高
14                 if(ftp_get($ftp, $tmpfile, $select_file, FTP_BINARY)) { //下載指定的文件到臨時文件
15                     ftp_quit( $ftp );  // 關閉鏈接
16                     header("Content-Type:application/octet-stream");
17                     header("Content-Disposition: attachment; filename=" . $select_file);
18                     readfile($tmpfile);
19                     unlink($tmpfile); // 刪除臨時文件
20                     return true;
21                 }else{
22                     return false;
23                 }
24             }else{
25                 return false;
26             }
27         }else{
28             return false;
29         }
30     }
31 }

這是上傳函數,先準備好!貌似我也是從哪位大神那找來的。。不記得了,很差意思!php

1 <?php
2 $path=$_GET['timePath'].'/'.$_GET['companyId'].'/'.$_GET['timePath'].'-'.$_GET['shopId'].'.txt';
3 $downResult=logFtpDownload($path);

拼接路徑字符串,調用函數,並傳入路徑字符串!ajax

到這裏,基本上已經完成了!不過這是理想狀態,就是頁面沒任何輸出,路徑$path是寫死的,由於header();以前不能有任何輸出。服務器

這種狀況通常都是用JS來解決,前臺頁面用ajax異步提交到後臺查詢相關、處理數據,若是文件路徑是相對單一的,甚至能夠組合好路徑$path,個人因爲條件太多,文件路徑也不相同,因此只能把數據處理好,回傳給前臺,ajax判斷回傳,若是成功,就用window.open();打開一個新窗口,並把相關參數傳給後臺對應控制器,固然,最好openWindow=window.open();把它賦值,好用來關閉,而後給一個intervalId=window.setInterval("函數名",1000);這個就是打開新窗口後1秒開始執行 "函數名"這個函數,這個函數就是用來顯示後臺拋出的異常,好比文件不存在,ftp登陸、鏈接失敗等等。。app

大概就是這樣了,我就是個小菜鳥,寫這個就是給本身整理下思路,加深下印象!還望各位神前來指導。。異步

相關文章
相關標籤/搜索