2011-08-10 13 views
1

CURL 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); 

このdoesntの:ブールで

$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

問題は、バックエンドがキーをチェックしていることです。「ファイル」フィールドが見つからない場合は、ヌルオブジェクトの参照に関するスタックトレースが生成されます。そのようにすることはできません:("ファイル"フィールドで送信する必要がありますが、その値は、ファイルが送信されないことを表す必要があります。それは可能でなければなりません。または何か) –

+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