web-dev-qa-db-ja.com

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

とにかく、単純なhtmlフォームのアップロードを使用して2 GBを超えるファイルをアップロードすることはできますか?以前は、チャンクを使用して、Silverlightで大きなファイルをアップロードしていました(大きなファイルをセグメントに分割し、セグメントを1つずつアップロードしてから、サーバーでセグメントを再構築します)。

ここで、単純なHTML(ただしGWT)フォームアップロードを使用する必要があるという要件があります。この方法で大きなファイルをアップロードする方法がある場合は、ご案内ください。

単純なhtmlを使用してそれを行うことが不可能な場合、flexを使用してファイルをセグメントに分割およびアップロードする方法について、誰でも私をガイドできますか?

36
Nadeem Ullah

HTTP POSTリクエストのサイズの制限は、通常HTML側にはまったくありません。制限はサーバー側にあります。 Webサーバーは、その大きなPOST要求を受け入れるように構成する必要があります。通常、デフォルトは通常2 GBであることが多く、サーバーは通常、その場合にHTTP 500エラーを返します。多くの場合、デフォルトの制限は4GBに増やすことができますが、それを超えると32ビットシステムの境界に達します。 64ビットOSを搭載した64ビットシステムでは、理論上の境界は16EBです。

その大きなPOST要求を受け入れるようにWebサーバーを構成する場合、またはWebサーバーの制限を超えたい場合、クライアント側でファイルを分割してパーツを再組み立てする以外のオプションはありません。サーバー側で。

HTMLは単なるマークアップ言語であるため、ファイルを分割する機能はありません。 Webページで提供する小さなアプリケーションのフレーバーで、C#(Silverlight)やJava(Applet)などの通常のプログラミング言語を実際に使用する必要があります。 FlashやFlexでも可能かもしれませんが、どちらもしないので、私にピン留めしないでください。

つまり、FTPは、ネットワーク経由で(大きな)ファイルを転送するためにHTTPよりもはるかに優れた選択肢です。そのためにHTTPを使用する選択を再検討します。

38
BalusC

HTML5 File APIを使用して大きなファイルをアップロードします。これにはスライスの概念があり、大きなファイルをアップロードできます。

var reader= new FileReader();
reader.onload=function(e){

//do whatever you want with result
}
var blob = file.slice(startingByte, endindByte);//slicing file
reader.readAsBinaryString(blob);

FileSystemチュートリアル

ファイルAPIチュートリアル

39
Konga Raju

バルクファイルをsqlserverデータベースにアップロードするWebアプリケーション(https)(Django/pythonを使用)を作成しました。このために、ファイルをチャンクで読み取り、sftpを介してサーバーに転送し、sqlserverに一括挿入を実行しました。 1 GBのファイルサイズのベンチマークを行い、約1分でプロセスの終了が終了しました。

0
Sudhakar Chavan