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 相关文章推荐
在线增减.htpasswd内的用户
Oct 09 PHP
PHP中文件上传的一个问题
Sep 04 PHP
Look And Say 序列php实现代码
May 22 PHP
php数组一对一替换实现代码
Aug 31 PHP
Thinkphp中数据按分类嵌套循环实现方法
Oct 30 PHP
php判断类是否存在函数class_exists用法分析
Nov 14 PHP
php实现mysql事务处理的方法
Dec 25 PHP
php实现在限定区域里自动调整字体大小的类实例
Apr 02 PHP
PHP提取字符串中的手机号正则表达式怎么写
Jul 17 PHP
利用PHPStorm如何开发Laravel应用详解
Aug 30 PHP
LaravelS通过Swoole加速Laravel/Lumen详解
Mar 02 PHP
ThinkPHP5.1的权限控制怎么写?分享一个AUTH权限控制
Mar 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
MYSQL 小技巧 -- LAST_INSERT_ID
2009/11/24 PHP
php 无法载入mysql扩展
2010/03/12 PHP
关于PHP结束标签的使用细节探讨及联想
2013/03/04 PHP
深入PHP curl参数的详解
2013/06/17 PHP
PHP获取文件扩展名的4种方法
2015/11/24 PHP
PHP静态成员变量
2017/02/14 PHP
PHP基于PDO扩展操作mysql数据库示例
2018/12/24 PHP
laravel实现上传图片的两种方式小结
2019/10/12 PHP
javascript读取RSS数据
2007/01/20 Javascript
比较不错的JS/JQuery显示或隐藏文本的方法
2014/02/13 Javascript
js清空form表单中的内容示例
2014/05/20 Javascript
js使用正则实现ReplaceAll全部替换的方法
2014/07/18 Javascript
JavaScript获取指定元素位置的方法
2015/04/08 Javascript
使用jQuery UI库开发Web界面的简单入门指引
2016/04/22 Javascript
纯JS代码实现气泡效果
2016/05/04 Javascript
微信小程序 条件渲染详解
2016/10/09 Javascript
ionic环境配置及问题详解
2017/06/27 Javascript
JavaScript 基础表单验证示例(纯Js实现)
2017/07/20 Javascript
vue中如何创建多个ueditor实例教程
2017/11/14 Javascript
Vue-cropper 图片裁剪的基本原理及思路讲解
2018/04/17 Javascript
详解Express笔记之动态渲染HTML(新手入坑)
2018/12/13 Javascript
使用node搭建自动发图文微博机器人的方法
2019/03/22 Javascript
Vue状态模式实现窗口停靠功能(灵动、自由, 管理后台Admin界面)
2020/03/06 Javascript
python的变量与赋值详细分析
2017/11/08 Python
解决python打不开文件(文件不存在)的问题
2019/02/18 Python
canvas里面如何基于随机点绘制一个多边形的方法
2018/06/13 HTML / CSS
Html5原创俄罗斯方块(基于canvas)
2019/01/07 HTML / CSS
我们是伦敦女孩:WalG
2018/01/08 全球购物
说一下mysql, oracle等常见数据库的分页实现方案
2012/09/29 面试题
物业经理求职自我评价
2013/09/22 职场文书
见习期自我鉴定
2013/11/07 职场文书
企业管理部经理岗位职责
2013/12/24 职场文书
英语一分钟演讲稿
2014/04/29 职场文书
单位工作证明格式模板
2014/10/04 职场文书
医院领导班子四风问题对照检查材料
2014/10/26 职场文书
干货:如何写好工作总结报告!
2019/05/10 职场文书