所以我希望用户能够上传大文件而不必担心后期最大大小值。 另一种方法是使用PUT并将文件作为原始数据发送。由于把整个文件到一个变量形式边界和编写php://输入到php中的文件
$client_data = file_get_contents("php://input");
: 当使用jQuery我可以这样做:
var data = new FormData();
jQuery.each($('#file_upload')[0].files, function(i, file) {
data.append('file-'+i, file);
});
$.ajax({
url: 'upload.php?filename=test.pdf',
data: data,
cache: false,
contentType: false,
processData: false,
type: 'PUT',
});
在PHP中我可以这样做:
$f = fopen($_GET['filename'], "w");
$s = fopen("php://input", "r");
while($kb = fread($s, 1024))
{
fwrite($f, $kb, 1024);
}
fclose($f);
fclose($s);
Header("HTTP/1.1 201 Created");
我没有做上传大文件时肯定会填满所有内存。
我无法弄清楚的是如何在没有窗体边界的情况下编写文件数据。 现在它写在文件是这样的顶部:
------WebKitFormBoundaryVz0ZGHLGxBOCUVQG
Content-Disposition: form-data; name="file-0"; filename="somename.pdf"
Content-Type: application/pdf
,并在底部是这样的:
------WebKitFormBoundaryVz0ZGHLGxBOCUVQG--
所以我需要解析的数据。但为此,我需要将整个数据流读入内存,并且我不想那么做。 我没有读过关于创建一个php:// temp流的信息。但没有运气,但与此。 如何在没有边界头的情况下将内容写入文件?没有首先将所有数据抽入变量?
你能否提供'Content-Type'头文件? –