泽西客户端上传大小

时间:2012-07-29 17:14:23

标签: java rest jersey

在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);

1 个答案:

答案 0 :(得分:0)

简单回答 - 不。

更全面的一个:你可以。但这不值得。基本上,您需要以某种方式为FormDataMultiPart实例调用MessageBodyWriter(请参阅org.glassfish.jersey.media.multipart.internal.MultiPartWriter.writeTo(...))并从该调用中获取写入的字节。有一些与此方法相关的问题;

  1. 您将执行两次writeTo操作 - 这意味着一个请求将消耗两倍的资源,或者
  2. 你必须缓存输出并将其作为byte[]发送 - 你需要大量内存(取决于data.zip文件大小)。