JSファイルのアップロードとダウンロードの大量

コア原則:

 

プロジェクトのコアは、ファイルブロックをアップロードすることです。フロントと協力のハイレベルへの後端部には、双方は、我々は次のような問題を解決するためのプロジェクトに焦点を当てるの完全な大容量ファイルのセグメントに順番に、より良いデータを必要とすることに合意しました。

*どのように断片化。

*ファイルを合成する方法。

*当初からのスライス中断。

プログラマの本質は、車輪を再作成するために私を余儀なくされたものの、ポイントは、私たちの仕事を容易にするために、強力なJSライブラリを使用して、市場での大きなファイルの車輪をブロックすることができた方法。しかし、関係のだけでなく、作業時間ので、私はあきらめることができます。最後に、私は希望のフロントエンドを達成するためにBaiduのWebUploaderを選択しました。

どれだけ近いか、終了する前に、まず私たちはブロックが属するファイルを区別しないか、問題を解決しなければなりません。初めに、私はユニークなUUIDを生成するためのフロントエンドを使用していたことは、各スライス要求に置く記号文書を、行います。しかし、その後、ときに私はブロックとファイルの関係を維持するためにMD5を使用、第二のパスを放棄します。

マージファイルの問題のサーバー、およびレコードのブロッキングが、この点で業界は、実際に良い解決策を与えています。サンダーを参照すると、あなたはそれぞれのダウンロード時間は、二つのファイル、ファイル本体が存在するであろうことがわかります、別のファイルは、一時ファイル、バイト位置を対応する各ブロックの一時ファイルが格納状態です。

これらは、要求数とサイズを持参する前端と後端との密接な接触をする必要があり、ファイルの断片化への固定サイズの必要性のフロントエンド、および断片化されています。成功した送信要求をサーバによれば、背景の前端部に達した後にのみ要求データスライス番号する必要があり、(セグメントのサイズは固定され、同じ)の開始位置を計算し、リードセグメントデータファイル、書き込みされた各ブロックのサイズをスライスファイルに。

開発を容易にするために、私はサービスのビジネス・ロジックは、初期化、ブロック処理などでアップロードされたファイルに分け、以下の終了します。

サーバー側のビジネスロジックモジュールは、以下の

 

機能解析:

フォルダ生成モジュール

 

フォルダは、サーバスキャンコードによってアップロードされた後、次のようです

 

アップロード・ブロックは、論理ブロックを処理する最も簡単なロジックであるべきで、UP6ファイルは、各ブロックと識別データブロックを有し、識別インデックスファイルブロックサイズ、オフセット、ファイルを含みますプロセスは非常に便利です後MD5、ファイルブロックMD5(オープンが必要)やその他の情報は、サーバーは、情報を受け取ることができます。例えば、ブロックデータが分散ストレージシステムに格納されています

 

ブロックのアップロードは、HTTPのような私たちのプロジェクト全体の基盤は、これらのブロックを使用する必要がある中断と言うことができます。

このブロックは比較的簡単です。これは、フロントエンドwebuploaderの使用であり、かつ、他の基本的な機能ブロックは、すでに、使いやすい封印されています。

私たちのファイルAPIが利用できるwebUploadでは、フロントエンドは非常に簡単でした。

フロントHTMLテンプレート

 

それは確かに一緒に指しています。我々は、ファイルの元の断片を合成する必要があるので、元のファイルのサイズの大きいファイルの断片化が、断片化は、何の機能ではありません。私達はちょうど行くには元の場所でのファイルに書き込まれた断片化する必要があります。私たちが話をしていることを前の原則なので、我々は、ブロックサイズとブロック番号を知って、私は、ファイル内のブロックの開始位置を確認することができます。だからここでは内部の前後にファイルを移動するにRandomAccessFileができる、のRandomAccessFileを使用するのが賢明です。しかしandomAccessFile機能の大半で、それは「メモリマップドファイル(メモリマップドファイル)」に置き換えNIO JDK1.4てきました。私は、プロジェクト内のRandomAccessFileとれるMappedByteBufferファイルを使用して合成した書きました。方法と対応uploadFileRandomAccessFile uploadFileByMappedByteBuffer。次の二つの方法コード。

秒の転送機能

 

サーバー側のロジック

秒の転送機能、Iは、ネットワークディスクのアップロードは、第二のパスで見つかったファイルをアップロードするとき、我々はすべてが終わっ反映信じています。実際には、少し研究さ学生の原則を知っている必要があり、実際には、マッチングシステム上で、その後、MD5ファイルを調べMD5ファイルシステムを記録するためにそれをアップロードし、最初のファイルをアップロードする前に、ファイルのMD5 MD5値または値の一部の内容を取得し、することですデータ。

ブレークポイント-HTTP、ファイルを選択し、クライアントの後に転送原則秒を達成したファイルのMD5値を得る契機にアップロード]をクリックし、MD5は、システム・インタフェース(/インデックス/ checkFileMd5)を呼び出して取得し、MD5は既に(Iプロジェクトが存在する照会インタフェースの状態を確認するために戻る)。値がアドレスファイルに格納され、キーを作るためにストア・データ、文書MD5値を使用し、次のステップへのRedis。私たちは理解してコードを見することができます信じています。

ああ、MD5値のフロントエンドが使用されているwebuploaderは、これは良いツールで、機能が付属しています。

コントロールはMD5のmd5_completeイベント、伝統的な価値観は、MD5計算ファイルの最後の引き金となり、開発者は、このイベントに対処する必要があります

HTTP

UP6は自動的に処理され、その後、別のプロセスを開発する必要がありますされていない再開します。

F_post.jspは、これらのパラメータを受け取り、処理し、開発者はビジネス・ロジックにのみフォーカスを必要とする、他の態様は心配する必要はありません。

HTTPは半分にファイルをアップロードするファイルのアップロードのプロセスの中断、人的要因(一時停止)または不可抗力(壊れたネットワークまたはネットワーク差)リードが失敗したということです。そして、とき環境修復し、新たなスタートのアップロードではないファイルを再アップロードします。

フロントも言及されている、HTTPの機能を達成するためにアップロードされたブロックに基づいており、多くの小さなブロックに大きなファイルに、各サーバは、ブロックの成功にアップロードすることができ、クライアントのアップロードを下に粉砕しますすぐにファイルの開始を確認するためにコール・インタフェース、条件がブロックをスキップするように選択されています。

原理は、ファイルステータスの取得が完了していない場合は、アップロードファイルの前に、コール・インターフェースへのアクセス上の各ファイルのアップロード、ファイルのMD5値の前に(/インデックス/ checkFileMd5、はい、第二のテスト・インタフェースを渡す)ということですすべてのブロック番号を返さないのアップロード、およびふるいが計算される条件をアップロードして、アップロードされていないフロントエンドブロック。

ファイルブロックの後にファイルを受信すると、サーバーに直接書き込むことができ

これは、ファイルのアップロード・ブロック効果であります

これは、アップロードの結果の後にフォルダです

これは、サービスの終了後にアップロードされたストアにフォルダ構造であります

参考記事:http://blog.ncmem.com/wordpress/2019/08/12/java-http%E5%A4%A7%E6%96%87%E4%BB%B6%E6%96%AD%E7 %82%B9%E7%BB %のAD%E4の%のBC%A0%E4%B8%8A%E4%BC%A0 /

議論するグループにようこそ:374 992 201

おすすめ

転載: www.cnblogs.com/songsu/p/12565129.html