最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

PHP CURL post數據報錯 failed creating formpost data

 更新時間:2016年10月16日 12:23:33   投稿:hebedich  
我們有時候用curl上傳文件遇到failed creating formpost data的錯誤,那具體是如何產生,又如何進行處理解決呢,下面我們就來探討下

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

failed creating formpost data

代碼中數組如下:

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


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

經過上網查詢和驗證,最終發(fā)現,問題出現在 @ 這里,如果在 @ 前面加一個 \ 轉義下就可以了,在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" 錯誤原因

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

最后通過錯誤日志查得這個原因是因為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 這個路徑是不存在的

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

相關文章

最新評論

商南县| 崇左市| 福清市| 清远市| 康乐县| 吉安县| 任丘市| 礼泉县| 乌拉特中旗| 大渡口区| 斗六市| 柯坪县| 伊春市| 内江市| 丰城市| 普格县| 五原县| 叙永县| 北宁市| 项城市| 冀州市| 怀安县| 界首市| 新宁县| 盈江县| 苗栗市| 安西县| 奎屯市| 寿光市| 宣恩县| 贵州省| 文昌市| 磐安县| 南靖县| 宜春市| 绥芬河市| 启东市| 都昌县| 社会| 镇坪县| 楚雄市|