2011-08-10 59 views
1

我試圖使用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" => "") 

任何人都知道更好?

回答

1

請嘗試完全刪除File字段?如果它是空的,它不會被提交?

$array = array(
"Name" => "Jon", 
"Message" => "My package was broken, please send new." 
); 
curl_setopt ($ch, CURLOPT_POSTFIELDS, $array); 
$output = curl_exec($ch); 
+0

問題是後端正在檢查密鑰,如果「File」字段丟失,它會產生一個堆棧跟蹤,指出引用空對象的內容。所以不能這樣做:(必須發送「文件」字段,但它的值必須表示沒有文件將被髮送。它必須是可能的,因爲webform可以做到這一點(沒有其他的異步帖子或任何東西) –

+1

啊。這已被問過,沒有結果(見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

相關問題