我收到文件(图像)与阿贾克斯上传到我的PHP脚本,并已完成了使用这方面的工作:使用PHP://输入和file_put_contents
$input = fopen("php://input", "r");
file_put_contents('image.jpg', $input);
很显然,我会净化输入此操作之前, 。
有一两件事我想检查是之前创建新文件的文件大小,具体如下:
$input = fopen("php://input", "r");
$temp = tmpfile();
$realsize = stream_copy_to_stream($input, $temp);
if ($realsize === $_SERVER["CONTENT_LENGTH"]) {
file_put_contents('image.jpg', $temp);
}
这是行不通的。该文件已创建,但其大小为0字节,因此内容未被放入文件中。我不太熟悉使用流,但我不明白为什么这不应该起作用,所以我转向你寻求帮助。提前致谢!
到底是如何在你的web浏览器上传?通常,你想使用'multipart/form-data'形式编码,然后用'$ _FILES'获取上传的文件。通过'php:// input',你表示你期望文件覆盖整个请求体。这表明您正在使用专有方法在网页浏览器中上传文件。一个自定义的applet可能? – BalusC 2010-10-23 19:44:35
我正在读取''元素的'files'集合,并通过XHR'send()'方法发送'file'。没有使用'
请启用错误报告和显示错误。 – NikiC 2010-10-23 20:04:46