web-dev-qa-db-ja.com

HTTPファイルのアップロードは大きなファイルに対してどのように機能しますか?

この質問を詳しく説明したいと思います: HTTPファイルのアップロードはどのように機能しますか? 。これは質問からのフォームです:

<form enctype="multipart/form-data" action="http://localhost:3000/upload?upload_progress_id=12344" method="POST">
<input type="hidden" name="MAX_FILE_SIZE" value="100000" />
Choose a file to upload: <input name="uploadedfile" type="file" /><br />
<input type="submit" value="Upload File" />
</form>

ファイルが非常に大きい場合(つまり、10 GB)はどうなりますか?ブラウザはすべてのデータを1つのリクエストにまとめてから、サーバーに送信しますか? RAMが2GBしかない場合、ブラウザはどのようにファイルを読み取り、リクエストを作成しますか?

ファイルがCSVであるとしましょう。サーバーにRAMとディスク容量がほとんどないと仮定します。ファイル全体をRAMまたはディスクに保持する代わりに、サーバーが各行を解析できるように、ファイルをサーバーにストリーミングする方法はありますか?

詳細な説明は大歓迎です(HTTP、TCPなど)

9
Nam Hoang

あなたはここでいくつかの詳細を見つけることができます:

htmlフォームを介した大きなファイルのアップロード(2 GB以上)

簡単に言うと、リモートhttpサーバーがHTTPPOSTの最大サイズを決定します。構成されている最大サイズよりも大きいものはすべて、エラーが発生します。

独自のソリューションを開発することはオプションです。大きなCSVファイルの例として、ファイルの1行を送信するHTTP POSTを想像してください。100行には100のHTTPPOSTが必要です。

主な欠点は、HTMLフォームを直接使用できないことです。おそらく、JavaScriptは、この投稿のバリエーションなど、投稿を処理する可能性があります。

jQueryまたは他のjsフレームワークを使用して文字列をファイルとしてアップロードする方法

順序付けが重要な場合(つまり、フォームデータの一部としてある種のシーケンス番号を送信する場合)、両側で行う必要があります。

これを達成する他の方法があります。しかし、うまくいけば、上記の提案があなたに考えさせるでしょう。

1
jmjatlanta