PHP5.6通过CURL上传图片@符无效的兼容问题
今天本來想試試一個圖片云的API,于是本地做了個上傳圖片的測試,結果灰常郁悶的發現以前一直用的好好的CURL上傳圖片居然死活不起作用,本來幾分鐘搞定的事情,結果折騰了大半天才終于找到原因,居然是兼容性問題,真是無語。。
網上搜索PHP通過CURL上傳圖片幾乎都是類似下面的代碼:?
以前上傳圖片都是在圖片路徑前面增加一個 @符號,如:
$file = __DIR__ .'/0634134726bc5b8b.jpg'; $data = array('mypic'=>'@'. $file);- 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
2 . 新的圖片上傳方法:?
使用 CURLFile 類來處理文件,如下:
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
我這里只是最簡單的應用,具體可參考下面官方文檔:?
http://php.net/manual/en/class.curlfile.php
這下終于上傳成功了。。。太坑爹了,一天時間又被折騰完了。
轉載于:https://www.cnblogs.com/xiaoleiel/p/8333971.html
《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀總結
以上是生活随笔為你收集整理的PHP5.6通过CURL上传图片@符无效的兼容问题的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: CentOS通过日志反查入侵(转)
- 下一篇: 【TensorFlow】TF-tf.nn