php使用curl实现ftp文件下载功能


Posted in PHP onMay 16, 2017

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

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

function file_upload($ftpIp,$ftpUser,$ftpPwd,$path,$fileSavePath){
  $curlobj = curl_init();//初始化
  //传入ftp的目标文件,如'ftp://192.168.3.1/test/1.jpg'
  curl_setopt($curlobj,CURLOPT_URL,"ftp://".$ftpIp."/".$path);
  curl_setopt($curlobj,CURLOPT_HEADER,0);//不输出header
  curl_setopt($curlobj,CURLOPT_RETURNTRANSFER,0);
  //time out after 300s 
  curl_setopt($curlobj,CURLOPT_TIMEOUT,2000);//超时时间
  //通过这个函数设置ftp的用户名和密码,没设置就不需要! 
  curl_setopt($curlobj,CURLOPT_USERPWD,$ftpUser.':'.$ftpPwd);

  $outfile = fopen($fileSavePath,'w+'); //保存到本地文件的文件名 
  curl_setopt($curlobj,CURLOPT_FILE,$outfile);

  $rtn = curl_exec($curlobj);
  if(curl_errno($curlobj)){
    writeLog('Curl error: ' . curl_error($curlobj));
  }
  fclose($outfile);
  curl_close($curlobj);
   if($rtn == 1){
    return true;
   }else{
    unlink($fileSavePath);//如果下载失败,但是本地open了这个文件,所以要删除
    return false;
   }

}

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

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

PHP 相关文章推荐
2.PHP入门
Oct 09 PHP
php var_export与var_dump 输出的不同
Aug 09 PHP
PHP设置图片文件上传大小的具体实现方法
Oct 11 PHP
php权重计算方法代码分享
Jan 09 PHP
php构造函数的继承方法
Feb 09 PHP
php身份证号码检查类实例
Jun 18 PHP
thinkphp3.x中session方法的用法分析
May 20 PHP
详解ThinkPHP3.2.3验证码显示、刷新、校验
Dec 29 PHP
php+redis在实际项目中HTTP 500: Internal Server Error故障排除
Feb 05 PHP
thinkPHP实现的联动菜单功能详解
May 05 PHP
PHP定义字符串的四种方式详解
Feb 06 PHP
PHP基于phpqrcode类生成二维码的方法示例详解
Aug 07 PHP
PHP jpgraph库的配置及生成统计图表:折线图、柱状图、饼状图
May 15 #PHP
php使用curl实现简单模拟提交表单功能
May 15 #PHP
PHP读取Excel类文件
May 15 #PHP
详谈php中 strtr 和 str_replace 的效率问题
May 14 #PHP
PHP从数组中删除元素的四种方法实例
May 12 #PHP
利用PHPExcel读取Excel的数据和导出数据到Excel
May 12 #PHP
php中时间函数date及常用的时间计算
May 12 #PHP
You might like
PHP 压缩文件夹的类代码
2009/11/05 PHP
php利用云片网实现短信验证码功能的示例代码
2017/11/18 PHP
详谈PHP中public,private,protected,abstract等关键字的用法
2017/12/31 PHP
Laravel配合jwt使用的方法实例
2020/10/25 PHP
IE不支持getElementsByClassName最终完美解决方案
2012/12/17 Javascript
JS事件在IE与FF中的区别详细解析
2013/11/20 Javascript
Js操作树节点自动折叠展开的几种方法
2014/05/05 Javascript
CSS3 media queries结合jQuery实现响应式导航
2016/09/30 Javascript
详解Angularjs在控制器(controller.js)中使用过滤器($filter)格式化日期/时间实例
2017/02/17 Javascript
Node.js 实现简单的接口服务器的实例代码
2017/05/23 Javascript
详解js类型判断
2018/05/22 Javascript
vue计算属性computed、事件、监听器watch的使用讲解
2019/01/21 Javascript
新年快乐! javascript实现超级炫酷的3D烟花特效
2019/01/30 Javascript
微信小程序实现时间进度条功能
2020/11/17 Javascript
详解JavaScript修改注册表的方法
2020/01/05 Javascript
微信公众号中的JSSDK接入及invalid signature等常见错误问题分析(全面解析)
2020/04/11 Javascript
[00:36]DOTA2上海特级锦标赛 Archon战队宣传片
2016/03/04 DOTA
[51:22]Fnatic vs IG 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/18 DOTA
python算法学习之基数排序实例
2013/12/18 Python
Python访问MySQL封装的常用类实例
2014/11/11 Python
在Python的Django框架中包装视图函数
2015/07/20 Python
详解Python中 __get__和__getattr__和__getattribute__的区别
2016/06/16 Python
python dataframe astype 字段类型转换方法
2018/04/11 Python
使用numpy和PIL进行简单的图像处理方法
2018/07/02 Python
Python对数据进行插值和下采样的方法
2018/07/03 Python
Python将字符串常量转化为变量方法总结
2019/03/17 Python
python 爬取小说并下载的示例
2020/12/07 Python
css3新单位vw、vh的使用教程
2018/03/23 HTML / CSS
HTML5 Video/Audio播放本地文件示例介绍
2013/11/18 HTML / CSS
JSP和Servlet有哪些相同点和不同点,他们之间的联系是什么?
2015/10/22 面试题
优秀通讯员事迹材料
2014/01/28 职场文书
幼儿园教师师德师风演讲稿:我自豪我是一名幼师
2014/09/10 职场文书
感谢信
2019/04/11 职场文书
人民币使用说明书
2019/04/17 职场文书
如何制定销售人员薪酬制度?
2019/07/09 职场文书
使用CSS实现六边形的图片效果
2022/08/05 HTML / CSS