PHP 5.6 如何使用 CURL 上传文件

以前我们通过 PHP 的 cURL 上传文件是,是使用“@+文件全路径”的来实现的:

curl_setopt(ch, CURLOPT_POSTFIELDS, array(
    ‘file‘ => ‘@‘.realpath(‘image.png‘),
));

PHP 从 5.5 开始引入了新的 CURLFile 类用来指向文件,CURLFile 类也可以详细定义 MIME 类型、文件名等可能出现在multipart/form-data 数据中的附加信息,PHP 推荐使用 CURLFile 替代旧的@语法,而 PHP 5.6 直接只支持 CURLFile 方法

真的是让我欲哭无泪,我调试了 2天2夜,也怪我装逼一定要升级到 PHP5 的最新版,所以 PHP 5.6 使用 CURL 上传文件的代码:

curl_setopt(ch, CURLOPT_POSTFIELDS, [
    ‘file‘ => new CURLFile(realpath(‘image.png‘)),
]);
时间: 2024-10-13 15:25:15

PHP 5.6 如何使用 CURL 上传文件的相关文章

PHP如何通过CURL上传文件

PHP使用CURL上传文件只需发送一个POST请求就可以了,在请求中设置某个字段为需要上传的文件全路径,并且以“@”开头,然后使用CURL把该变量以POST方式发送到服务器,在服务端即可以从超级全局变量$_FILES中取到相应的上传文件信息. 下面我们以一个例子来展示这个过程. 假设本地有一个文本文件log.txt,其路径为“/www/test/log.txt”,内容如下: this is a file for testhello PythonTab!为了把这个文件上传给服务端的脚本http:/

php curl上传文件$_FILES为空问题

php使用curl上传文件,代码如下: 发送的代码(完全是官方的示例) <?php /* http://localhost/upload.php:print_r($_POST);print_r($_FILES);*/ $ch = curl_init(); $data = array('name' => 'Foo', 'file' => '@/home/vagrant/test.png'); curl_setopt($ch, CURLOPT_URL, 'http://localhost/t

linux使用curl上传文件并且同时携带其它传递参数

一般使用linux原生态的命令curl上传文件时命令如下 假如要上传文件是myfile.txt curl -F "file_name[email protected]" -X POST "http://192.168.1.111/server" 其中file_name是接收的key 后面的myfile.txt是要上传的文件,在=后面加上@符号表示要上传的是文件 如果要单独上传参数则是 curl -d "usernaem=u1&age=13"

win中使用curl上传文件报错

今天复现“WordPress插件Easy WP SMTP反序列化漏洞”时,需要使用curl上传文件,我又用的windows环境,一直出错 curl: (26) couldn't open file "D:/PyCharm/pocsuite3/pocsuite3/help/wordpress_unserialize.txt'" 最开始以为是权限问题 结果并不是 搞了很久 最后解决方案如下图 文件使用“”包含并用\转义 url http://xxx.ceye.io/ -F 'action=

php+curl上传文件

因为公司项目用java做的,需要我这边用php上传文件.只给了个接口,参数都不明确,然后这边不提交表单,在生成pdf之后就立马上传.用了php+curl,总是没上传成功,这里看到了篇文章http://blog.sina.com.cn/s/blog_709475a101013dlf.html,希望可以借鉴.还有这篇http://www.cnblogs.com/jackluo/p/4113255.html

curl 上传文件 发送json

//上传文件 // 创建一个 cURL 句柄$ch = curl_init($url); // 创建一个 CURLFile 对象$cfile = curl_file_create(__DIR__.'/22.jpg','image/jpeg','test_name'); // 设置 POST 数据$data = array('test_file' => $cfile);curl_setopt($ch, CURLOPT_POST,1);curl_setopt($ch, CURLOPT_POSTFIE

PHP 通过CURL上传文件到另一台服务器

// 创建一个 cURL 句柄$ch = curl_init('目标地址');// 创建一个 CURLFile 对象//php5.5版本以后不再通过@符号进行上传了,需要通过这种方式或者 new \CURLFile()对象都可以 ,给定三个参数为一下参数,可复制这段代码自己测试一下,是可行的$file = curl_file_create($_FILES[$name]['tmp_name'],$_FILES[$name]['type'],$_FILES[$name]['name']);// 设置

Curl上传文件

curl -v -XPOST -H "Content-Type: image/jpeg" --data-binary @test.jpg http://127.0.0.1:3000/thumbnail

php5.6之后的版本使用curl以@+文件名的方式上传文件无效的解决版本

使用curl上传文件使用[email protected]文件路径的方式,在php5.6以后的版本中无法使用了 官方文档给出明确解释 如果需要支持的话,可以将CURLOPT_SAFE_UPLOAD设置为false 或者使用CURLFile上传文件