JAVA WEBプロジェクトフォルダーのアップロードおよびダウンロードソリューション

ここにはバックエンドコードのみが記述されています。基本的な考え方は、フロントエンドがファイルをフラグメント化し、アップロードインターフェースにアクセスするたびに、現在のファイル数とフラグメントの総数などのパラメーターをバックエンドに渡します。

すぐ下にコードを貼り付けましょう難しいコードのほとんどはコメントされています:

ファイルエンティティクラスをアップロード:

エンティティークラスには、実用的な属性だけでなく、必要な関数がすでにたくさんあることがわかります。MD5秒で送信される情報など。

 

1つ目は、ファイルデータ受信ロジックです。これは、コントロールによってアップロードされたファイルブロックデータを受信し、それをサーバーファイルに書き込みます。コントロールは、ブロックのインデックス、サイズ、MD5、および長さの情報を提供しており、ニーズに応じて柔軟に処理でき、ファイルブロックのデータを分散ストレージシステムに保存することもできます。

 

ファイル初期化セクション

 

最初のステップ:RandomAccessFile、ランダムアクセスファイルクラスオブジェクトを取得する

2番目のステップ:RandomAccessFileのgetChannel()メソッドを呼び出して、ファイルチャネルFileChannelを開きます。このロジックは最適化できます。将来、分散ストレージが必要になった場合は、分散ストレージに変更して、単一サーバーへの負荷を軽減できます。

ステップ3:現在のブロック数を取得し、ファイルの最後のオフセットを計算する

ステップ4:ファイルのバイト長を取得するために使用される、現在のファイルブロックのバイト配列を取得する

ステップ5:FileChannelクラスFile Channelのmap()メソッドを使用して、ダイレクトバイトバッファーMappedByteBufferを作成する

手順6:ブロックのバイト配列をバッファーの現在の位置にあるmappedByteBuffer.put(byte [] b);

ステップ7:バッファーを解放する

手順8:ファイルが完全にアップロードされたかどうかを確認する

フォルダーのスキャン

 

ストレージパス生成クラス

さて、これで終わりです。質問や批判があれば、コメントやプライベートメッセージをお待ちしています。私たちは一緒に成長し、一緒に学びます。

最後に、エフェクト画像を入れます

バックエンドコードロジックはほとんど同じで、現在MySQL、Oracle、SQLをサポートしています。使用する前に、データベースを設定する必要があります。私が書いたこの記事を参照できます:http   :
//blog.ncmem.com/wordpress/2019/08/07/java 大きなファイルのアップロードとダウンロード/グループへの参加を歓迎し、「374992201

おすすめ

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