我試圖使用CURLs CURLOPT_POSTFIELDS發佈到多部分html表單,但我無法找到如何發佈它沒有文件。用CURLOPT_POSTFIELDS發送一個空文件字段爲多部分形式
在普通瀏覽器中測試表單時,「文件」字段可以爲空,「名稱」和「消息」不能。
這工作:
$array = array(
"Name" => "Jon",
"Message" => "My package was broken, please send new.",
"File" => "@look_omg_its_broken_omgomg_look_at_the_corners.jpg"
);
curl_setopt ($ch, CURLOPT_POSTFIELDS, $array);
這並不:在布爾(假) 我也嘗試過值的這些變化
$array = array(
"Name" => "Jon",
"Message" => "My package was broken, please send new.",
"File" => ""
);
curl_setopt ($ch, CURLOPT_POSTFIELDS, $array);
$output = curl_exec($ch);
這最後$輸出結果,但沒有成功。
"File" => "@"
"File" => "@/"
"File" => NULL
"File"
"File" => array("")
"File" => array("filename" => "")
任何人都知道更好?
問題是後端正在檢查密鑰,如果「File」字段丟失,它會產生一個堆棧跟蹤,指出引用空對象的內容。所以不能這樣做:(必須發送「文件」字段,但它的值必須表示沒有文件將被髮送。它必須是可能的,因爲webform可以做到這一點(沒有其他的異步帖子或任何東西) –
啊。這已被問過,沒有結果(見http://stackoverflow.com/questions/5137382/sending-empty-input-type-file-fields-with-curl-on-php)。我想你必須像@Alix Axel指出的那樣手動建立* multipart/form-data *主體。在cURL列表中有一箇舊的電子郵件,基本上這樣說:http://curl.haxx.se/mail /lib-2005-06/0079.html。祝你好運。 – Femi