curl文件上传有两种方式,一种是post_fileds,一种是infile
curl文件上传有两种方式,一种是POSTFIELDS
,一种是INFILE,POSTFIELDS
传递@实际地址,INFILE传递文件流句柄!
);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
curl_exec($ch);
Note:
传递一个数组到CURLOPT_POSTFIELDS
,cURL会把数据编码成 multipart/form-data,而然传递一个URL-encoded字符串时,数据会被编码成 application/x-www-form-urlencoded。
- /*
- * To change this template, choose Tools | Templates
- * ftp curl方法操作类
- */
- class ftp{
- //FTP服务器地址
- public static $host = "127.0.0.1";
- //FTP端口
- public static $port = "2121";
- //上传的FTP目录
- public static $uploaddir = "upblod";
- //读取的FTP目录
- public static $readdir = "read";
- //FTP用户名
- public static $usrname = "user";
- //FTP密码
- public static $pwd = "pwd";
- /*
- * curl 方法将文件上传到FTP服务器
- * $filename上传到FTP的文件名,$uploadfile具体需要上传文件的地址(我用的绝对路径)
- */
- public static function ftp_upload($filename,$uploadfile)
- {
- $url = "ftp://".self::$host.":".self::$port."/".self::$uploaddir."/".$filename;
- //需要上传的文件
- $fp = fopen ($uploadfile, "r");
- $ch = curl_init();
- curl_setopt($ch, CURLOPT_VERBOSE, 1); //有意外发生则报道
- curl_setopt($ch, CURLOPT_USERPWD, self::$usrname.':'.self::$pwd); //FTP登陆账号密码,模拟登陆
- curl_setopt($ch, CURLOPT_URL, $url);
- curl_setopt($ch, CURLOPT_PUT, 1); //用HTTP上传一个文件
- curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); //不输出
- curl_setopt($ch, CURLOPT_INFILE, $fp); //要上传的文件
- $http_result = curl_exec($ch); //执行
- $error = curl_error($ch);
- curl_close($ch);
- fclose($fp);
- //成功上传文件 返回true
- if (!$error)
- {
- return true;
- }
- }
- /*
- * curl 方法将读取FTP文件并保存在本地使用
- * $filenameFTP服务器文件名,$filepath 保存到本地(服务器)的目录
- */
- public static function ftp_read($filename,$filepath)
- {
- $curl = curl_init();
- $target_ftp_file = "ftp://".self::$host.":".self::$port."/".self::$readdir."/".$filename;//完整路径
- curl_setopt($curl, CURLOPT_URL,$target_ftp_file);
- curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
- curl_setopt($curl, CURLOPT_VERBOSE, 1);
- curl_setopt($curl, CURLOPT_FTP_USE_EPSV, 0);
- curl_setopt($curl, CURLOPT_TIMEOUT, 300); // times out after 300s
- curl_setopt($curl, CURLOPT_USERPWD,self::$usrname.':'.self::$pwd);//FTP用户名:密码
- // Sets up the output file
- //本地保存目录
- if(is_dir($filepath)){
- $outfile = fopen($filepath.$filename, 'w');//保存到本地的文件名
- curl_setopt($curl,CURLOPT_FILE,$outfile);
- // Executes the cURL
- $info = curl_exec($curl);
- fclose($outfile);
- $error_no = curl_errno($curl);
- curl_close($curl);
- //成功读取文件,返回 true
- if($info){
- return true;
- }
- }
- }
- }
- ?>
curl文件上传有两种方式,一种是post_fileds,一种是infile的更多相关文章
- php curl文件上传兼容php5.0~5.6各版本
PHP 5.0~5.6 各版本兼容的cURL文件上传 最近做的一个需求,使用PHP cURL上传文件.踩坑若干,整理如下. 不同版本PHP之间cURL的区别 PHP的cURL支持通过给CURL_POS ...
- 利用Selenium实现图片文件上传的两种方式介绍
在实现UI自动化测试过程中,有一类需求是实现图片上传,这种需求根据开发的实现方式,UI的实现方式也会不同. 一.直接利用Selenium实现 这种方式是最简单的一种实现方式,但是依赖于开发的实现. 当 ...
- linux 下文件上传的两种工具(XFTP5和Putty之pscp)方式
一.使用XFTP(,需要先在LINUX上安装启用FTP服务) 然后,在WINDOWS上启动XFPT6客户端,将下载的文件上传至LINUX 指定目录: 二.使用PUTTY软件安装目录下的PSCP命令 1 ...
- SpringBoot从入门到精通十一(SpringBoot文件上传的两种方法)
前言 在企业级项目开发过程中,上传文件是最常用到的功能.SpringBoot集成了SpringMVC,当然上传文件的方式跟SpringMVC没有什么出入. 本章目标 使用SpringBoot项目完成单 ...
- C#实现Web文件上传的两种方法
1. C#实现Web文件的上传 在Web编程中,我们常需要把一些本地文件上传到Web服务器上,上传后,用户可以通过浏览器方便地浏览这些文件,应用十分广泛. 那么使用C#如何实现文件上传的功能呢?下面笔 ...
- [转]考虑 PHP 5.0~5.6 各版本兼容性的 cURL 文件上传
FROM : https://segmentfault.com/a/1190000000725185 最近做的一个需求,要通过PHP调用cURL,以multipart/form-data格式上传文件. ...
- python_way day21 Django文件上传Form方式提交,原生Ajax提交字符处啊,Django文件上传之原生Ajax方式、jQuery Ajax方式、iframe方式,Django验证码,抽屉示例,
python_way day21 1.Django文件上传至Form方式 2.原生Ajax文件上传提交表单 使用原生Ajax好处:不依赖jquery,在发送一个很小的文件或者字符串的时候就可以用原生A ...
- PHP 5.0~5.6 各版本兼容性的 cURL 文件上传
不同版本PHP之间cURL的区别 PHP的cURL支持通过给CURL_POSTFIELDS传递关联数组(而不是字符串)来生成multipart/form-data的POST请求. 传统上,PHP的cU ...
- 考虑 PHP 5.0~5.6 各版本兼容性的 cURL 文件上传
最近做的一个需求,要通过PHP调用cURL,以multipart/form-data格式上传文件.踩坑若干,够一篇文章了. 重要警告 没事不要读PHP的官方中文文档!版本跟不上坑死你! 不同版本PHP ...
随机推荐
- JAVA动态加载JAR包的实现
如何动态的加载这些驱动!不可能把所有的数据库驱动都集成到JAR包中吧?!于是动态加载驱动的JAR包就产生了!其实这些在做系统基础代码时,经常用到,只是一般我们没有机会去搞而已. 动态加载JAR包,使用 ...
- Jquery+Ajax+php学习笔记
昨天研究ajax,想作个登陆框,无刷新就把用户名密码提交给后台php程序,验证后发回. 几经琢磨 总算出来前台代码: <script src="./javascript/jquery- ...
- github研究
一个程序猿一定会用git,但是我还没怎么用过,平时真是懒啊,学习之!...
- OSX Mavericks下使用Synergy进行多台主机通过wifi共享键鼠问题的解决方法
转帖: OSX 10.9 几天用下来还是遇到几处问题的:之前先是遇到了OSX Mavericks GM598无法从Appstore升级到完全正式版的问题,下载无反应,后来找到了解决方法,发在以下链接: ...
- 内存就是RAM?
内存不全是RAM,让我们看看当今的Intel计算机是如何连接各个组件的吧.下图展示了主板上的主要组件: 现代主板的示意图,北桥和南桥构成了芯片组. 当你看图时,请牢记一个至关重要的事实:CPU一点也不 ...
- Zen Coding 用法
html:5 或者 ! 生成 HTML5 结构html:xt 生成 HTML4 过渡型html:4s 生成 HTML4 严格型 E 元素名 (div, p);E#id 带id的元素 (div#cont ...
- iOS 安装使用cocoapods
一.什么是CocoaPods 1.为什么需要CocoaPods 在进行iOS开发的时候,总免不了使用第三方的开源库,比如SBJson.AFNetworking.Reachability等等.使用这些库 ...
- HttpClient使用详解(转)
HttpClient使用详解 Http协议的重要性相信不用我多说了,HttpClient相比传统JDK自带的URLConnection,增加了易用性和灵活性(具体区别,日后我们再讨论),它不仅是客户 ...
- left join查询结果大于原始数据
left join onon后面一定是一个主键或者是一个值为唯一的字段吗 on后面关联的条件如果是1对1的数量就不变,如果是1对多的数量就会增加 追问: 问题就在这,我1对多了 追答: 通常的做法是 ...
- AE 栅格处理
由RasterDataset得到RasterLayer RasterDataset->RasterLayer IRasterLayer pRasterLayer = new RasterLaye ...