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
下载文件的点击数回填
Oct 09 PHP
PHP iconv 函数转gb2312的bug解决方法
Oct 11 PHP
php DOS攻击实现代码(附如何防范)
May 29 PHP
php简单实现屏蔽指定ip段用户的访问
Apr 29 PHP
CI框架数据库查询之join用法分析
May 18 PHP
php中遍历二维数组并以表格的形式输出的方法
Jan 03 PHP
PHP封装函数实现生成随机的字符串验证码
Jan 24 PHP
PHP上传文件及图片到七牛的方法
Jul 25 PHP
实例讲解通过​PHP创建数据库
Jan 20 PHP
PHP获取远程http或ftp文件的md5值的方法
Apr 15 PHP
TP5框架使用QueryList采集框架爬小说操作示例
Mar 26 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
肝肠寸断了解下!盘点史上最伤心的十大动漫
2020/03/04 日漫
php与mysql建立连接并执行SQL语句的代码
2011/07/04 PHP
php时间戳格式化显示友好的时间函数分享
2014/10/21 PHP
ThinkPHP3.2.2的插件控制器功能
2015/03/05 PHP
给WordPress的编辑后台添加提示框的代码实例分享
2015/12/25 PHP
php监测数据是否成功插入到Mysql数据库的方法
2016/11/25 PHP
利用PHP实现一个简单的用户登记表示例
2017/04/25 PHP
php函数式编程简单示例
2019/08/08 PHP
一页面多XMLHttpRequest对象
2007/01/22 Javascript
js同时按下两个方向键
2007/12/01 Javascript
利用WebBrowser彻底解决Web打印问题(包括后台打印)
2009/06/22 Javascript
jQuery模拟超链接点击效果代码
2013/04/21 Javascript
利用NodeJS的子进程(child_process)调用系统命令的方法分享
2013/06/05 NodeJs
express的中间件cookieParser详解
2014/12/04 Javascript
jQuery使用append在html元素后同时添加多项内容的方法
2015/03/26 Javascript
详解AngularJS中的依赖注入机制
2015/06/17 Javascript
jQuery表格行上移下移和置顶的实现方法
2015/10/08 Javascript
Bootstrap弹出框(Popover)被挤压的问题小结
2017/07/11 Javascript
Element-ui table中过滤条件变更表格内容的方法
2018/03/02 Javascript
jQuery实现颜色打字机的完整代码
2020/03/19 jQuery
[01:21]DOTA2新纪元-7.0新版本即将开启!
2016/12/11 DOTA
[03:06]2018年度CS GO最具人气解说-完美盛典
2018/12/16 DOTA
Python中for循环详解
2014/01/17 Python
解决pip install xxx报错SyntaxError: invalid syntax的问题
2018/11/30 Python
浅析python表达式4+0.5值的数据类型
2020/02/26 Python
python3中数组逆序输出方法
2020/12/01 Python
解决CSS3 transition-delay 属性默认值0不带单位失效的问题
2020/10/29 HTML / CSS
美国最大的船只买卖在线市场:Boat Trader
2018/08/04 全球购物
Wilson体育用品官网:美国著名运动器材品牌
2019/05/12 全球购物
美国眼镜在线零售商:Dualens
2019/12/07 全球购物
大学班长的职责
2014/01/27 职场文书
预备党员2014全国两会学习心得体会
2014/03/10 职场文书
捐书活动总结
2014/05/04 职场文书
2014年采购部工作总结
2014/11/20 职场文书
当幸福来敲门英文观后感
2015/06/01 职场文书
处理canvas绘制图片模糊问题
2022/05/11 Javascript