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 相关文章推荐
php 删除cookie和浏览器重定向
Mar 16 PHP
PHP生成excel时单元格内换行问题的解决方法
Aug 26 PHP
codeigniter框架The URI you submitted has disallowed characters错误解决方法
May 06 PHP
PHP延迟静态绑定示例分享
Jun 22 PHP
thinkphp实现上一篇与下一篇的方法
Dec 08 PHP
ThinkPHP路由详解
Jul 27 PHP
PHP+Mysql+jQuery实现发布微博程序 php篇
Oct 15 PHP
PHP编写登录验证码功能 附调用方法
May 19 PHP
php常用字符函数实例小结
Dec 29 PHP
详解Yii2 定制表单输入字段的标签和样式
Jan 04 PHP
PHP实现删除多重数组对象属性并重新赋值的方法
Jun 07 PHP
PHP实现APP微信支付的实例讲解
Feb 10 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
如何分别全角和半角以避免乱码
2006/10/09 PHP
php基础知识:类与对象(4) 范围解析操作符(::)
2006/12/13 PHP
php版微信公众平台回复中文出现乱码问题的解决方法
2016/09/22 PHP
php生成复杂验证码(倾斜,正弦干扰线,黏贴,旋转)
2018/03/12 PHP
PHPStorm 2020.1 调试 Nodejs的多种方法详解
2020/09/17 NodeJs
Jquery 弹出层插件实现代码
2009/10/24 Javascript
jquery last-child 列表最后一项的样式
2010/01/22 Javascript
鼠标滑在标题上显示图片的JS代码
2013/11/19 Javascript
Jqgrid表格随窗口大小改变而改变的简单实例
2013/12/28 Javascript
JS模拟简易滚动条效果代码(附demo源码)
2016/04/05 Javascript
jQuery绑定事件的四种方式介绍
2016/10/31 Javascript
Javascript基础回顾之(三) js面向对象
2017/01/31 Javascript
vue 添加vux的代码讲解
2017/11/30 Javascript
Angular4集成ng2-file-upload的上传组件
2018/03/14 Javascript
p5.js入门教程之小球动画示例代码
2018/03/15 Javascript
在vue中使用vue-echarts-v3的实例代码
2018/09/13 Javascript
Openlayers测量距离与面积的实现方法
2020/09/25 Javascript
[01:38]完美世界DOTA2联赛(PWL)宣传片:第一站
2020/10/26 DOTA
利用Python暴力破解zip文件口令的方法详解
2017/12/21 Python
Django中Forms的使用代码解析
2018/02/10 Python
python使用tornado实现简单爬虫
2018/07/28 Python
Python  unittest单元测试框架的使用
2018/09/08 Python
python linecache 处理固定格式文本数据的方法
2019/01/08 Python
详解python中的数据类型和控制流
2019/08/08 Python
wxpython实现按钮切换界面的方法
2019/11/19 Python
Python input函数使用实例解析
2019/11/22 Python
Keras模型转成tensorflow的.pb操作
2020/07/06 Python
详解HTML5新增标签
2017/11/27 HTML / CSS
详解HTML5 Canvas绘制不规则图形时的非零环绕原则
2016/03/21 HTML / CSS
Viking Direct荷兰:购买办公用品
2019/06/20 全球购物
2013英文求职信模板范文
2013/11/15 职场文书
网络教育自我鉴定
2014/02/04 职场文书
工伤私了协议书范本
2014/11/24 职场文书
2019员工保密协议书(3篇)
2019/09/23 职场文书
JavaScript实现栈结构详细过程
2021/12/06 Javascript
vue.js 使用原生js实现轮播图
2022/04/26 Vue.js