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 26 PHP
基于python发送邮件的乱码问题的解决办法
Apr 25 PHP
一个PHP的远程图片抓取函数分享
Sep 25 PHP
php将url地址转化为完整的a标签链接代码(php为url地址添加a标签)
Jan 17 PHP
PHP小技巧之JS和CSS优化工具Minify的使用方法
May 19 PHP
新浪SAE云平台下使用codeigniter的数据库配置
Jun 12 PHP
php中switch与ifelse的效率区别及适用情况分析
Feb 12 PHP
php事务回滚简单实现方法示例
Mar 28 PHP
PHP实现求两个字符串最长公共子串的方法示例
Nov 17 PHP
php删除一个路径下的所有文件夹和文件的方法
Feb 07 PHP
如何在PHP环境中使用ProtoBuf数据格式
Jun 19 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
锁定年轻人的双倍活力 星巴克推出星倍醇即饮浓咖啡
2021/03/03 咖啡文化
php 获取一个月第一天与最后一天的代码
2010/05/16 PHP
php curl 伪造IP来源的实例代码
2012/11/01 PHP
解决PhpStorm64不能启动的问题
2020/06/20 PHP
HR vs CL BO3 第二场 2.13
2021/03/10 DOTA
JavaScript基本对象
2007/01/11 Javascript
EasyUI的treegrid组件动态加载数据问题的解决办法
2011/12/11 Javascript
排序算法的javascript实现与讲解(99js手记)
2014/09/28 Javascript
快速掌握jQuery插件开发
2017/01/19 Javascript
node.js中实现kindEditor图片上传功能的方法教程
2017/04/26 Javascript
Vue创建头部组件示例代码详解
2018/10/23 Javascript
javascript中如何判断类型汇总
2019/05/14 Javascript
JavaScript工具库之Lodash详解
2019/06/15 Javascript
vue 封装 Adminlte3组件的实现
2020/03/18 Javascript
es6数组includes()用法实例分析
2020/04/18 Javascript
JavaScript实现Tab标签页切换的最简便方式(4种)
2020/06/28 Javascript
python实现从web抓取文档的方法
2014/09/26 Python
Python+django实现简单的文件上传
2016/08/17 Python
Python实现的建造者模式示例
2018/08/06 Python
Python根据欧拉角求旋转矩阵的实例
2019/01/28 Python
Python实现自定义读写分离代码实例
2019/11/16 Python
TensorFlow实现指数衰减学习率的方法
2020/02/05 Python
彻底搞懂 python 中文乱码问题(深入分析)
2020/02/28 Python
python和c语言哪个更适合初学者
2020/06/22 Python
keras:model.compile损失函数的用法
2020/07/01 Python
利用CSS3实现自定义滚动条代码分享
2016/08/18 HTML / CSS
台湾线上百货零售购物平台:friDay购物
2017/08/18 全球购物
西雅图电动自行车公司:Rad Power Bikes
2020/02/02 全球购物
怎样声明子类
2013/07/02 面试题
大学毕业生个人自荐书
2014/07/02 职场文书
大学第二课堂活动总结
2014/07/08 职场文书
爱国主义教育演讲稿
2014/08/26 职场文书
个人查摆问题及整改措施
2014/10/16 职场文书
出纳岗位职责范本
2015/03/31 职场文书
OpenCV-Python 实现两张图片自动拼接成全景图
2021/06/11 Python
Redis特殊数据类型Geospatial地理空间
2022/06/01 Redis