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 }

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

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

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

到這里,基本上已經完成了!不過這是理想狀態,就是頁面沒任何輸出,路徑$path是寫死的,因為header();之前不能有任何輸出。

這種情況一般都是用JS來解決,前台頁面用ajax異步提交到后台查詢相關、處理數據,如果文件路徑是相對單一的,甚至可以組合好路徑$path,我的由於條件太多,文件路徑也不相同,所以只能把數據處理好,回傳給前台,ajax判斷回傳,如果成功,就用window.open();打開一個新窗口,並把相關參數傳給后台對應控制器,當然,最好openWindow=window.open();把它賦值,好用來關閉,然后給一個intervalId=window.setInterval("函數名",1000);這個就是打開新窗口后1秒開始執行 "函數名"這個函數,這個函數就是用來顯示后台拋出的異常,比如文件不存在,ftp登錄、連接失敗等等。。

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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM