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实现验证码功能
Oct 09 PHP
PHP遍历二维数组的代码
Apr 22 PHP
PHP获取中英混合字符串长度的方法
Jun 07 PHP
php中实现精确设置session过期时间的方法
Jul 17 PHP
为PHP安装imagick时出现Cannot locate header file MagickWand.h错误的解决方法
Nov 03 PHP
PHP实现通用alert函数的方法
Mar 11 PHP
php面向对象与面向过程两种方法给图片添加文字水印
Aug 26 PHP
Symfony2框架创建项目与模板设置实例详解
Mar 17 PHP
thinkPHP批量删除的实现方法分析
Nov 09 PHP
ThinkPHP实现转换数据库查询结果数据到对应类型的方法
Nov 16 PHP
php实例化一个类的具体方法
Sep 19 PHP
用Laravel轻松处理千万级数据的方法实现
Dec 25 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利用str_replace防注入的方法
2013/11/10 PHP
基于PHP实现用户注册登录功能
2016/10/14 PHP
PHP输出图像imagegif、imagejpeg与imagepng函数用法分析
2016/11/14 PHP
thinkphp3.2实现在线留言提交验证码功能
2017/07/19 PHP
PHP函数按引用传递参数及函数可选参数用法示例
2018/06/04 PHP
PHP基于cookie实现统计在线人数功能示例
2019/01/16 PHP
JS中的构造函数详细解析
2014/03/10 Javascript
JS模拟键盘打字效果的方法
2015/08/05 Javascript
jQuery实现仿QQ在线客服效果的滚动层代码
2015/10/15 Javascript
jquery UI Datepicker时间控件的使用方法(加强版)
2015/11/07 Javascript
jquery 全选、全不选、反选效果的实现代码【推荐】
2016/05/05 Javascript
jQury Ajax使用Token验证身份实例代码
2017/09/22 Javascript
Node.js中sequelize时区的配置方法
2017/12/10 Javascript
react 创建单例组件的方法
2018/04/26 Javascript
vue移动端下拉刷新和上拉加载的实现代码
2018/09/08 Javascript
vue使用axios上传文件(FormData)的方法
2019/04/14 Javascript
详解微信小程序开发用户授权登陆
2019/04/24 Javascript
微信小程序--获取用户地理位置名称(无须用户授权)的方法
2019/04/29 Javascript
微信小程序与公众号卡券/会员打通的问题
2019/07/25 Javascript
Layui实现数据表格默认全部显示(不要分页)
2019/10/26 Javascript
JavaScript设计模式--简单工厂模式定义与应用案例详解
2020/05/23 Javascript
[46:38]完美世界DOTA2联赛PWL S2 Magma vs PXG 第三场 11.28
2020/12/02 DOTA
Python3 max()函数基础用法
2019/02/19 Python
如何基于Python批量下载音乐
2019/11/11 Python
pytorch载入预训练模型后,实现训练指定层
2020/01/06 Python
Tirendo比利时:在线购买轮胎
2018/10/22 全球购物
乌克兰最大的家用电器和电子产品连锁店:Eldorado
2019/10/02 全球购物
列车长先进事迹材料
2014/01/25 职场文书
班主任与学生安全责任书
2014/07/25 职场文书
2014年全国爱牙日宣传活动方案
2014/09/21 职场文书
读后感作文评语
2014/12/25 职场文书
拾金不昧感谢信
2015/01/21 职场文书
2016大学生党校学习心得体会
2016/01/06 职场文书
2017元旦晚会开幕词
2016/03/03 职场文书
Python中使用tkFileDialog实现文件选择、保存和路径选择
2022/05/20 Python
Golang实现可重入锁的示例代码
2022/05/25 Golang