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登录、连接失败等等。。

大概就是这样了,我就是个小菜鸟,写这个就是给自己整理下思路,加深下印象!还望各位神前来指导。。

 

转载于:https://www.cnblogs.com/kenny-love/p/4571604.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值