国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > PHP > 正文

PHP CURL post數據報錯 failed creating formpost data

2024-05-04 23:51:09
字體:
來源:轉載
供稿:網友

在做微信卡券使用curl上傳logo圖片時,發現一個報錯:

failed creating formpost data

代碼中數組如下:

$data = array('buffer' => '@test.jpg');

結合微信給的文檔,檢查語法,貌似并沒有發現什么錯誤...

經過上網查詢和驗證,最終發現,問題出現在 @ 這里,如果在 @ 前面加一個 / 轉義下就可以了,在php官方的bugs.php.net中也有提到(本文最后提供網址)

最終代碼:

$data = array('buffer' => '//@test.jpg');

問題解決。

bugs地址參考:https://bugs.php.net/bug.php?id=50060

我們再來看一個實例:

之前寫過一個php使用curl上傳文件的代碼,今天暴出了一個bug,curl錯誤信息為"failed creating formpost data"

先說一下curl上傳文件的過程吧

$file =array("upimg"=>"@/tmp/tmp.jpg");//文件路徑,前面要加@,表明是文件上傳. $url = 'http://localhosts/upload.php'; $ch = curl_init(); curl_setopt($ch ,CURLOPT_URL,$url); curl_setopt($ch,CURLOPT_POST,true); curl_setopt($ch,CURLOPT_POSTFIELDS,$file); curl_exec($ch); 

這里有兩個地方需要注意:

1、$file必須是數組

2、上傳文件的路徑前面加@

3、路徑必須使用決定路徑

現在分析出現"failed creating formpost data" 錯誤原因

首先很快就定位到出現該問題的原因是路徑問題,分析了程序代碼也沒發現什么問題,始終不得解

最后通過錯誤日志查得這個原因是因為curl post提交的數據參數中有一個參數內容是以@符號開頭的,

比如說要上傳/tmp/tmp.jpg,同時提交簡介,這樣參數值就是 path='/tmp/tmp.jpg', 輸入簡介desc='@test haha';

根據手冊上說curl post提交數據有兩種方式

1.curl($ch, CURLOPT_POSTFIELD, array('pic'=>'@/tmp/tmp.jpg', 'filename'=>'tmp');  2.curl($ch, CURLOPT_POSTFIELD, 'pic=@/tmp/tmp.jpg&filename=tmp') 

在有上傳文件的情況下必須使用第一種方式

curl($ch, CURLOPT_POSTFIELD, array('pic'=>'@/tmp/tmp.jpg', 'filename'=>'tmp'); 

這樣如果第一字符是@符后面的內容均會被解析成地址,如果地址不存在就會拋出該錯誤,就想簡介desc @test 這個路徑是不存在的

第二種方式只會將其當作普通字符串處理


注:相關教程知識閱讀請移步到PHP教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 济阳县| 兴安县| 靖江市| 隆回县| 镇远县| 沙洋县| 兖州市| 齐河县| 六枝特区| 柳江县| 马龙县| 朝阳区| 策勒县| 新巴尔虎左旗| 门源| 瓮安县| 金门县| 黄骅市| 广灵县| 昭觉县| 通化市| 甘谷县| 忻城县| 朝阳区| 军事| 陈巴尔虎旗| 海城市| 九寨沟县| 凤阳县| 繁昌县| 通榆县| 普定县| 聊城市| 石柱| 区。| 丹江口市| 抚顺市| 沙雅县| 兴宁市| 蓬溪县| 嵩明县|