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 相关文章推荐
让你的WINDOWS同时支持MYSQL4,MYSQL4.1,MYSQL5X
Dec 06 PHP
NOT NULL 和NULL
Jan 15 PHP
用phpmyadmin更改mysql5.0登录密码
Mar 25 PHP
检测png图片是否完整的php代码
Sep 06 PHP
PHP 计算代码执行耗时的代码修正网上普遍错误
May 14 PHP
在WINDOWS中设置计划任务执行PHP文件的方法
Dec 19 PHP
Php Ctemplate引擎开发相关内容
Mar 03 PHP
PHP去掉json字符串中的反斜杠\及去掉双引号前的反斜杠
Sep 30 PHP
微信红包随机生成算法php版
Jul 21 PHP
php获取给定日期相差天数的方法分析
Feb 20 PHP
PHP批量删除jQuery操作
Jul 23 PHP
PHP实现腾讯短网址生成api接口实例
Dec 08 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实现mysql数据库备份类
2008/03/20 PHP
解密ThinkPHP3.1.2版本之独立分组功能应用
2014/06/19 PHP
PHP中的常见魔术方法功能作用及用法实例
2015/07/01 PHP
WordPress的主题编写中获取头部模板和底部模板
2015/12/28 PHP
php 数据结构之链表队列
2017/10/17 PHP
Laravel 使用查询构造器配合原生sql语句查询的例子
2019/10/12 PHP
PHP常用函数之base64图片上传功能详解
2019/10/21 PHP
jQuery验证插件validation使用指南
2015/04/21 Javascript
bootstrap3 兼容IE8浏览器!
2016/05/02 Javascript
JavaScript跨域调用基于JSON的RESTful API
2016/07/09 Javascript
jQuery插件WebUploader实现文件上传
2016/11/07 Javascript
jQuery实现文档树效果
2017/02/20 Javascript
ionic 自定义弹框效果
2017/06/27 Javascript
vue 下列表侧滑操作实例代码详解
2018/07/24 Javascript
NodeJS使用Range请求实现下载功能的方法示例
2018/10/12 NodeJs
浅析JS中什么是自定义react数据验证组件
2018/10/19 Javascript
微信小程序textarea层级过高(盖住其他元素)问题的解决办法
2019/03/04 Javascript
vue swipe自定义组件实现轮播效果
2019/07/03 Javascript
vue-router路由模式详解(小结)
2019/08/26 Javascript
Vue——前端生成二维码的示例
2020/12/19 Vue.js
python3序列化与反序列化用法实例
2015/05/26 Python
详解Python判定IP地址合法性的三种方法
2018/03/06 Python
Python错误处理操作示例
2018/07/18 Python
Python中Proxypool库的安装与配置
2018/10/19 Python
selenium+python自动化测试之鼠标和键盘事件
2019/01/23 Python
Python提取频域特征知识点浅析
2019/03/04 Python
使用Django搭建一个基金模拟交易系统教程
2019/11/18 Python
python利用datetime模块计算程序运行时间问题
2020/02/20 Python
世界领先的26岁以下学生和青少年旅行预订网站:StudentUniverse
2018/07/01 全球购物
GC是什么?为什么要有GC?
2013/12/08 面试题
学习十八大精神心得体会
2013/12/31 职场文书
地球一小时宣传标语
2014/06/24 职场文书
2015年个人实习工作总结
2014/12/12 职场文书
Go 实现英尺和米的简单单位换算方式
2021/04/29 Golang
MySQL主从搭建(多主一从)的实现思路与步骤
2021/05/13 MySQL
JAVA长虹键法之建造者Builder模式实现
2022/04/10 Java/Android