查看: 2407|回复: 0

[PHP实例] php使用curl实现ftp文件下载功能

发表于 2018-4-1 09:24:54

本文实例为大家分享了php实现ftp文件下载功能,供大家参考,具体内容如下

不知道为什么用正常的ftp_get函数下载文件速度特别慢,但是用ftp的客户端下载很快,所以换了curl的下载方式,速度正常

  1. function file_upload($ftpIp,$ftpUser,$ftpPwd,$path,$fileSavePath){
  2. $curlobj = curl_init();//初始化
  3. //传入ftp的目标文件,如'ftp://192.168.3.1/test/1.jpg'
  4. curl_setopt($curlobj,CURLOPT_URL,"ftp://".$ftpIp."/".$path);
  5. curl_setopt($curlobj,CURLOPT_HEADER,0);//不输出header
  6. curl_setopt($curlobj,CURLOPT_RETURNTRANSFER,0);
  7. //time out after 300s
  8. curl_setopt($curlobj,CURLOPT_TIMEOUT,2000);//超时时间
  9. //通过这个函数设置ftp的用户名和密码,没设置就不需要!
  10. curl_setopt($curlobj,CURLOPT_USERPWD,$ftpUser.':'.$ftpPwd);
  11. $outfile = fopen($fileSavePath,'w+'); //保存到本地文件的文件名
  12. curl_setopt($curlobj,CURLOPT_FILE,$outfile);
  13. $rtn = curl_exec($curlobj);
  14. if(curl_errno($curlobj)){
  15. writeLog('Curl error: ' . curl_error($curlobj));
  16. }
  17. fclose($outfile);
  18. curl_close($curlobj);
  19. if($rtn == 1){
  20. return true;
  21. }else{
  22. unlink($fileSavePath);//如果下载失败,但是本地open了这个文件,所以要删除
  23. return false;
  24. }
  25. }
复制代码

测试下载小文件是正常的,但是如果网速很慢,下载大文件时候,会报一个ftp timeout的错误,目前还在不知道是哪里配置问题,还是什么问题。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持程序员之家。



回复

使用道具 举报