使用CURLOPT_POSTFIELDS将空文件字段发布到多部分表单

时间:2011-08-10 05:08:00

标签: php forms curl multipart

我试图使用CURLs CURLOPT_POSTFIELDS发布到多部分html表单,但我无法找到如何发布没有文件。

在普通浏览器中测试表单时,“文件”字段可以为空,“名称”和“消息”不能。

这有效:

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

这最后一个$输出导致bool(false) 我也尝试了这些价值观的变化,但没有成功。

"File" => "@"
"File" => "@/"
"File" => NULL
"File"
"File" => array("")
"File" => array("filename" => "")

任何人都知道更好吗?

2 个答案:

答案 0 :(得分:1)

尝试完全删除File字段?如果它是空的,则不会被提交?

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

答案 1 :(得分:1)

如果不重构您的后端或手动模拟多部分表单提交,我很确定您无法单独使用任何CURLOPT_POSTFIELDS逻辑来解决您的问题,另请参阅:

如果您坚持单独使用CURL尝试解决此问题,建议您检查ext/curl source code