web-dev-qa-db-ja.com

ASP.NETアプリケーションを介した大きなファイル(最大100GB)のアップロード

企業ネットワーク内で動作しているASP.NETアプリケーションを介してファイルをアップロードする機能を何らかの方法で実装する必要があります。問題は、これらのファイルがますます大きくなっていることです。現時点では非常に一般的な非同期アップロードを使用していますが、問題はファイルがますます大きくなり、maxAllowedContentLengthの最大値以来、uintを介して設定されるファイルあたりの上限が3.9GBになることです。これ以上何も許可しません。ユーザーがアップロードすると思われるファイルはすぐにこの値を超え、最大サイズが100ギガバイトに達する可能性があります。

この問題の解決策をオンラインで探してみましたが、大容量ファイルのほとんどの記事では、せいぜい1GBを意味しています。

ASP.NET MVC\WebAPIアプリケーションを介して本当に大きなファイル(最大100g)をアップロードする方法はありますか、または代替ソリューションを探す必要がありますか?

20
user3223738

はい、ファイルを小さな部分に分割する必要があります。次の例を参照してください。 http://forums.asp.net/t/1742612.aspx?How+to+upload+a+big+file+ in + Mvc +

7

チャンクで送信することを検討できます。これは大きなファイルの要件をスキップします(各要求は送信するチャンクのサイズに過ぎないため)が、クライアント側とサーバー側では少し複雑です。

アップロードされたファイルをwebsocket経由でストリーミングするために似たようなことをしましたが、これは複数のajaxリクエストで簡単にできます。どちらの場合でも、 JavaScript File API を使用して、クライアントのコンピューター上のファイルのセグメントを読み取り、そのセグメントを送信可能なもの(おそらくBase64)にエンコードし、その特定のセグメントを送信します。 Webサーバーへ。サーバーがファイルを適切に書き込んでいることを確認するために、ファイル位置などの追加データを送信することもできます。サーバーは応答方法を選択することができ(受信を確認するための「true」のように単純な場合もあります)、その後クライアントのjavascriptがファイルの次のチャンクを読み取って送信します。

githubリポジトリはこちらASP.NET MVCサーバー側コードはこちら )でWebSocketを使用してこれをデモしていますAJAXリクエスト。

3
RTigger