0

REST クライアントで、いくつかのファイルをサーバーにアップロードします。
アップロード プロセスについてユーザーに報告するために、進行状況バーを使用します。
合計サイズは、ファイル ディメンションの合計に設定されます。
ファイルのバイト数よりもアップロードのバイト数の方が多いため、これは推定値です。問題は、アップロードが開始される前
に、アップロードの実際のバイト数を取得できますか? これにより、アップロードを開始する前に、推定ではなく合計サイズを決定できます。

 FormDataMultiPart multiPart = new FormDataMultiPart();
 FileDataBodyPart fdbp = new FileDataBodyPart("data.zip", new File("data.zip")); 
 BodyPart bp = multiPart.bodyPart(fdbp);
 builder.post(String.class, multiPart);
4

1 に答える 1

0

簡単な答え-いいえ。

より包括的なもの:あなたはそうすることができます。しかし、それだけの価値はありません。基本的に、FormDataMultiPartインスタンスに対して何らかの方法でMessageBodyWriterを呼び出し(を参照org.glassfish.jersey.media.multipart.internal.MultiPartWriter.writeTo(...))、その呼び出しから書き込まれたバイトを取得する必要があります。このアプローチに関連するいくつかの問題があります。

  1. writeTo操作を2回実行します。つまり、1つのリクエストが2倍のリソースを消費するか、
  2. 出力をキャッシュして送信byte[]する必要があります-大量のメモリが必要になります(data.zipファイルのサイズによって異なります)。
于 2012-07-31T08:17:22.653 に答える