PHP5.6通过CURL上传图片@符无效的兼容问题
来源:互联网 发布:windows vista sp2 编辑:程序博客网 时间:2024/05/16 10:29
今天本来想试试一个图片云的API,于是本地做了个上传图片的测试,结果灰常郁闷的发现以前一直用的好好的CURL上传图片居然死活不起作用,本来几分钟搞定的事情,结果折腾了大半天才终于找到原因,居然是兼容性问题,真是无语。。
网上搜索PHP通过CURL上传图片几乎都是类似下面的代码:
以前上传图片都是在图片路径前面增加一个 @符号,如:
$file = __DIR__ .'/0634134726bc5b8b.jpg';$data = array('mypic'=>'@'. $file);
这样就行了,但现在这种情况一般只适用于 PHP5.6以下的版本。
对5.6来说,直接加@是木有用的啦。
解决办法有两个:一种是兼容;二是使用新的方法。
1 . 兼容方法:
主要用到 CURL 的一个配置参数 CURLOPT_SAFE_UPLOAD
CURLOPT_SAFE_UPLOAD 在 PHP5.5中默认值是 false
而在 PHP5.6中已经默认为 true 了。
所以只需要增加一行强制设置为 false 就行,如下:
注意:该参数的设置顺序,必须在设置 CURLOPT_POSTFIELDS 参数之前才有效哦!!!
<?php$url = 'http://127.0.0.1/test3.php';$file = __DIR__ .'/0634134726bc5b8b.jpg';$data = array('mypic'=>'@'. $file);$curl = curl_init();curl_setopt($curl, CURLOPT_URL, $url);curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);curl_setopt($curl, CURLOPT_POST, true);curl_setopt($curl, CURLOPT_SAFE_UPLOAD, false);curl_setopt($curl, CURLOPT_POSTFIELDS, $data);$content = curl_exec($curl);curl_close($curl);print_r($content);
2 . 新的图片上传方法:
使用 CURLFile 类来处理文件,如下:
$url = 'http://127.0.0.1/test3.php';$file = __DIR__ .'/0634134726bc5b8b.jpg';$data = array('mypic'=>new CURLFile($file));$curl = curl_init();curl_setopt($curl, CURLOPT_URL, $url);curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);curl_setopt($curl, CURLOPT_POST, true);curl_setopt($curl, CURLOPT_POSTFIELDS, $data);$content = curl_exec($curl);curl_close($curl);print_r($content);
我这里只是最简单的应用,具体可参考下面官方文档:
http://php.net/manual/en/class.curlfile.php
这下终于上传成功了。。。太坑爹了,一天时间又被折腾完了。
0 0
- PHP5.6通过CURL上传图片@符无效的兼容问题
- PHP5.6之后curl上传图片
- php5.6关于curl以@方式上传文件的解决方案
- php5.5以上版本curl上传图片(兼容php5.5以下版本)
- php5.5.9 curl 上传文件
- 图片的上传和curl下载分析
- PHP curl 上传文件版本兼容问题
- php7 curl上传图片
- php5.6关于curl以@方式上传文件的变化及解决七牛上传时报file is not specified in multipart的问题
- php5.6关于curl以@方式上传文件的变化及解决七牛上传时报file is not specified in multipart的问题
- PHP通过CURL上传文件
- php 通过curl上传文件
- php5.6开启curl支持
- 解决php5.6的curl扩展开启失败的问题
- 解决php5.6的curl扩展开启失败的问题
- 解决PHP5.6的cURL扩展开启失败的问题
- PHP5.6以后开启curl支持的办法
- PHP curl上传图片方
- spark rdd存储开销分析
- 01-复杂度1 最大子列和问题
- 最小费用流
- 插入排序法(二)
- ip段/数字,如192.168.0.1/24是什么意思?
- PHP5.6通过CURL上传图片@符无效的兼容问题
- XML用法实例详解
- Android SDK manager 设置
- 【MFC】:MFC如何给控件设计缺省值?
- 深入理解letter-spacing和word-spacing2
- LeetCode之旅(17)-Ugly Number
- hdu 4146 Flip Game【思维+暴力】
- [090626]痕 ~きずあと~【日文硬盘版】[痕+雫&Origin][全CG存档&攻略=日本语启动+打开存档补丁]
- NWERC 2012 Foul Play 构造 (uvaLive 6271 )