2012-07-29 185 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文件大小)。