【问题标题】:Jersey client upload sizeJersey 客户端上传大小
【发布时间】:2012-07-29 17:14:23
【问题描述】:

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

【问题讨论】:

  • 您认为有什么开销?为什么?获得文件的确切内容还不够吗?

标签: java rest jersey


【解决方案1】:

简单的答案 - 不。

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

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

【讨论】:

    猜你喜欢
    • 2010-09-30
    • 2011-02-25
    • 2015-12-08
    • 1970-01-01
    • 1970-01-01
    • 2016-04-23
    • 2014-11-29
    • 2018-09-20
    • 1970-01-01
    相关资源
    最近更新 更多