版权声明:本文为博主原创文章,未经博主允许不得转载。 http://blog.youkuaiyun.com/zhouzme
今天本来想试试一个图片云的API,于是本地做了个上传图片的测试,结果灰常郁闷的发现以前一直用的好好的CURL上传图片居然死活不起作用,本来几分钟搞定的事情,结果折腾了大半天才终于找到原因,居然是兼容性问题,真是无语。。
网上搜索PHP通过CURL上传图片几乎都是类似下面的代码:
以前上传图片都是在图片路径前面增加一个 @符号,如:
- 1
- 2
- 1
- 2
这样就行了,但现在这种情况一般只适用于 PHP5.6以下的版本。
对5.6来说,直接加@是木有用的啦。
解决办法有两个:一种是兼容;二是使用新的方法。
1 . 兼容方法:
主要用到 CURL 的一个配置参数 CURLOPT_SAFE_UPLOAD
CURLOPT_SAFE_UPLOAD 在 PHP5.5中默认值是 false
而在 PHP5.6中已经默认为 true 了。
所以只需要增加一行强制设置为 false 就行,如下:
注意:该参数的设置顺序,必须在设置 CURLOPT_POSTFIELDS 参数之前才有效哦!!!
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
2 . 新的图片上传方法:
使用 CURLFile 类来处理文件,如下:
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
我这里只是最简单的应用,具体可参考下面官方文档:
http://php.net/manual/en/class.curlfile.php
这下终于上传成功了。。。太坑爹了,一天时间又被折腾完了。
-
顶
-
踩
本文介绍在PHP5.6环境下使用CURL上传图片遇到的问题及解决方案,包括兼容旧版上传方式与采用CURLFile类的新方法。
3525

被折叠的 条评论
为什么被折叠?



