投稿の最大サイズの値を心配することなく、大きなファイルをアップロードできるようにします。 代わりに、PUTを使用してファイルを生データとして送信しています。 jqueryのを使用している場合 私はこれを行うことができます。フォームの境界とphp://の入力をPHPのファイルに入力する
はPHPで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',
});
私はこれを行うことができます:私はやっておりません
$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");
:
$client_data = file_get_contents("php://input");
を変数にファイル全体を置くので、巨大なファイルをアップロードするときに必ずすべてのメモリを埋めるでしょう。
私が理解できないことは、フォーム境界なしでファイルデータを書き込む方法です。
------WebKitFormBoundaryVz0ZGHLGxBOCUVQG
Content-Disposition: form-data; name="file-0"; filename="somename.pdf"
Content-Type: application/pdf
と、このような下に何かで:
------WebKitFormBoundaryVz0ZGHLGxBOCUVQG--
だから私は、データを解析する必要が 今のところは、このようなファイルの何かの先頭に書き込まれます。しかし、そのために私は全体のデータストリームをメモリに読み込む必要があり、大きなビデオファイルではそれをやりたくありません。 私はおそらくphp:// tempストリームを作成することについて何かを読んだ。しかし、それはまだ運がありません。 境界ヘッダーなしでコンテンツをファイルに書き込むにはどうすればよいですか?そして、最初にすべてのデータを変数にポンピングする必要はありませんか?たぶん
あなたは 'Content-Type'ヘッダを提供できますか? –