java - 如何在 rest api jersey 中获取文件的大小

标签 java rest jersey multipartform-data

我已经制作了一个 rest api,它工作正常,但我想读取文件的大小,我使用下面的代码来读取文件的大小

@POST
@Path("/test")
@Consumes(MediaType.MULTIPART_FORM_DATA)
public Response upload( FormDataMultiPart form ){
    System.out.println(" size of file="+ filePart.getContentDisposition().getSize());
}

但我得到了文件 -1 的大小。

谁能建议我如何读取文件的实际大小。

但是使用

System.out.println(" data name ="+ filePart.getContentDisposition().getFileName());

我得到了正确的文件名。

最佳答案

首先,我认为限制数据大小的最好方法是在服务器配置上进行设置。请查看相关ref.

其次,由于它是随 Stream 一起提供的,所以它会遇到 EOF 或类似的。这意味着您无法从一开始就找到尺寸。

然而,第三种判断 Jersey 尺寸的替代方法是使用 HTTP header 的内容尺寸。服务器首先获取“Content-Length” header 以了解正文的大小。 @Context HttpServletRequest 请求request.getContentLength() 方法。但是因为它有多个部分,你需要注意主体大小是数据和协议(protocol)开销的总和(分隔符/内容信息)

祝你好运

关于java - 如何在 rest api jersey 中获取文件的大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36834663/

相关文章:

java - 如何将 Hazelcast 与 restful 一起使用?

java - Jersey 2.0 的 Restful Web 服务

java - HttpClient 请求成功并定义了超时,但没有定义就挂起

java - MessageBodyProviderNotFoundException : MessageBodyReader not found for media type=text/html;charset=UTF-8

java - CDI 的受限泛型

java - 带有日历的 Java 中的天数枚举

java - Imap gmail 在 MAC 上使用 java SSLSocket 不响应

java - JAXB XmlIDREF 和映射/列表

java - Jersey 客户端在 ClientResponse.getLastModified() 中抛出 NPE

java - 井字棋盘,WIN方法错误