2012-07-29 184 views
0

在REST客戶端中,我將多個文件上傳到服務器。
爲了向用戶報告上傳過程,我使用了一個進度條。
總大小設置爲文件大小的總和。
這是一個估計值,因爲上傳的字節數多於文件中的字節數。
現在的問題是:我可以獲得上傳開始前上傳的實際字節數嗎? 這將允許在上傳開始前確定總大小而不是估計大小。Jersey客戶端上傳大小

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

你認爲有什麼開銷?爲什麼?這不足以獲得文件的準確信息嗎? – 2012-07-31 08:22:22

回答

0

簡單的答案 - 沒有。

更全面的一個:你可以。但這不值得。基本上你需要以某種方式爲FormDataMultiPart實例調用MessageBodyWriter(請參閱org.glassfish.jersey.media.multipart.internal.MultiPartWriter.writeTo(...)),並從該調用中獲取寫入的字節。有一些與這種方法有關的問題;

  1. 你會做的writeTo操作兩次 - 這意味着一個請求會消耗兩倍的資源,因爲它應該或
  2. 你必須緩存輸出,並把它作爲一個byte[] - 你將需要大量的內存(取決於data.zip文件大小)。