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 相关文章推荐
PHP5.3.1 不再支持ISAPI
Jan 08 PHP
PHPMailer发送HTML内容、带附件的邮件实例
Jul 01 PHP
destoon实现首页显示供应、企业、资讯条数的方法
Jul 15 PHP
Laravel最佳分割路由文件(routes.php)的方式
Aug 04 PHP
ThinkPHP模板标签eq if 中区分0,null,false的方法
Mar 24 PHP
php二维码生成以及下载实现
Sep 28 PHP
PHP实现的ID混淆算法类与用法示例
Aug 10 PHP
PHP实现的62进制转10进制,10进制转62进制函数示例
Jun 06 PHP
Laravel框架Blade模板简介及模板继承用法分析
Dec 03 PHP
thinkphp框架实现路由重定义简化url访问地址的方法分析
Apr 04 PHP
PHP7生产环境队列Beanstalkd用法详解
May 19 PHP
thinkphp诸多限制条件下如何getshell详解
Dec 09 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
ninety plus是什么?ninety plus咖啡好吗?
2021/03/04 新手入门
通俗易懂的php防注入代码
2010/04/07 PHP
探讨如何把session存入数据库
2013/06/07 PHP
Windows下安装PHP单元测试环境PHPUnit图文教程
2014/10/24 PHP
PHP弱类型语言中类型判断操作实例详解
2017/08/10 PHP
Mac下关于PHP环境和扩展的安装详解
2019/10/17 PHP
javascript 特性检测并非浏览器检测
2010/01/15 Javascript
NodeJS的模块写法入门(实例代码)
2012/03/07 NodeJs
javascript实现可拖动变色并关闭层窗口实例
2015/05/15 Javascript
jQuery实现div拖拽效果实例分析
2016/02/20 Javascript
详解AngularJS过滤器的使用
2016/03/11 Javascript
javascript实现随机生成DIV背景色
2016/06/20 Javascript
详解JavaScript中的属性和特性
2016/12/08 Javascript
小程序实现多列选择器
2019/02/15 Javascript
ES6 Promise对象的含义和基本用法分析
2019/06/14 Javascript
layui-tree实现Ajax异步请求后动态添加节点的方法
2019/09/23 Javascript
node.js使用 http-proxy 创建代理服务器操作示例
2020/02/10 Javascript
微信小程序拖拽排序列表的示例代码
2020/07/08 Javascript
[54:10]完美世界DOTA2联赛PWL S2 Magma vs FTD 第二场 11.29
2020/12/03 DOTA
python使用xlrd模块读写Excel文件的方法
2015/05/06 Python
在Python的Django框架中显示对象子集的方法
2015/07/21 Python
python中的内置函数max()和min()及mas()函数的高级用法
2018/03/29 Python
PyTorch学习笔记之回归实战
2018/05/28 Python
利用Pycharm断点调试Python程序的方法
2018/11/29 Python
Java文件与类动手动脑实例详解
2019/11/10 Python
Python多继承以及MRO顺序的使用
2019/11/11 Python
Python 解析pymysql模块操作数据库的方法
2020/02/18 Python
Django ModelForm组件原理及用法详解
2020/10/12 Python
html5嵌入内容_动力节点Java学院整理
2017/07/07 HTML / CSS
软件生产职位结构化面试主要考察要素及面试题库
2015/06/12 面试题
优秀食品类广告词
2014/03/19 职场文书
家庭教育的心得体会
2014/09/01 职场文书
2016年学校十一国庆节活动总结
2016/04/01 职场文书
golang连接MySQl使用sqlx库
2022/04/14 Golang
mysql 8.0.27 绿色解压版安装教程及配置方法
2022/04/20 MySQL
Mysql表数据比较大情况下修改添加字段的方法实例
2022/06/28 MySQL