我正在使用Valums File Uploader插件。这个插件在 Chrome 上运行,但我在 Firefox 上遇到了问题。我已经隔离了问题,但我无法猜测发生了什么......
问题在这里:
function save($path) {
$input = fopen("php://input", "r");
$temp = tmpfile();
$realSize = stream_copy_to_stream($input, $temp);
fclose($input);
if ($realSize != $this->getSize()){
return false;
}
$target = fopen($path, "w");
fseek($temp, 0, SEEK_SET);
stream_copy_to_stream($temp, $target);
fclose($target);
return true;
}
这段 PHP 是服务器的一部分,该函数应该将上传的文件移动到$path
. 问题是不$input
包含数据,它是空的。即使我把它放在我的 PHP 处理程序文件的第一行:
$postdata = file_get_contents("php://input");
字符串为$postdata
空。仅在 Firefox 中,不在 Chrome 中。如果我去客户端,Firebug 显示 Firefox 正在发送文件:
但是如果你去 PHP 文档,它会说“ php://input is not available with enctype="multipart/form-data" ”,所以我不知道问题是Firefox
,php://input
还是发送一个带有multipart/form-data
(没有这个,我不知道如何发送文件)。有什么问题?