企業ネットワーク内で動作しているASP.NETアプリケーションを介してファイルをアップロードする機能を何らかの方法で実装する必要があります。問題は、これらのファイルがますます大きくなっていることです。現時点では非常に一般的な非同期アップロードを使用していますが、問題はファイルがますます大きくなり、maxAllowedContentLength
の最大値以来、uint
を介して設定されるファイルあたりの上限が3.9GBになることです。これ以上何も許可しません。ユーザーがアップロードすると思われるファイルはすぐにこの値を超え、最大サイズが100ギガバイトに達する可能性があります。
この問題の解決策をオンラインで探してみましたが、大容量ファイルのほとんどの記事では、せいぜい1GBを意味しています。
ASP.NET MVC\WebAPIアプリケーションを介して本当に大きなファイル(最大100g)をアップロードする方法はありますか、または代替ソリューションを探す必要がありますか?
はい、ファイルを小さな部分に分割する必要があります。次の例を参照してください。 http://forums.asp.net/t/1742612.aspx?How+to+upload+a+big+file+ in + Mvc +
チャンクで送信することを検討できます。これは大きなファイルの要件をスキップします(各要求は送信するチャンクのサイズに過ぎないため)が、クライアント側とサーバー側では少し複雑です。
アップロードされたファイルをwebsocket経由でストリーミングするために似たようなことをしましたが、これは複数のajaxリクエストで簡単にできます。どちらの場合でも、 JavaScript File API を使用して、クライアントのコンピューター上のファイルのセグメントを読み取り、そのセグメントを送信可能なもの(おそらくBase64)にエンコードし、その特定のセグメントを送信します。 Webサーバーへ。サーバーがファイルを適切に書き込んでいることを確認するために、ファイル位置などの追加データを送信することもできます。サーバーは応答方法を選択することができ(受信を確認するための「true」のように単純な場合もあります)、その後クライアントのjavascriptがファイルの次のチャンクを読み取って送信します。
githubリポジトリはこちら ( ASP.NET MVCサーバー側コードはこちら )でWebSocketを使用してこれをデモしていますAJAXリクエスト。