我该如何修复org.jvnet.mimepull.MIMEParsingException?

时间:2014-03-20 14:30:04

标签: java angularjs file-upload jax-rs mime-types

使用JAX-RS(Jersey)将image / doc / xlsx文件从我的AngularJS客户端上传到我的服务器端java时,我收到以下异常,

org.jvnet.mimepull.MIMEParsingException: Reached EOF, but there is no closing MIME boundary.
这是什么?为什么我得到这个例外?我怎么能摆脱这个?

注意:适用于扩展名为.txt, .html, .yml, .java, .properties的文件 但不适用于扩展名为.doc, .xlsx, .png, .PNG, .jpeg.. etc.

的文件

我的服务器端代码:

@POST
@Path("/{name}")
@Consumes(MediaType.MULTIPART_FORM_DATA)
public String uploadedFiles(@Nonnull @PathParam("name") final String name,
        @FormDataParam("file") final InputStream inputStream,
        @FormDataParam("file") final FormDataContentDisposition content) {
}

2 个答案:

答案 0 :(得分:1)

好的,我只是猜测,但我想我可以在这里看到一个模式。

  • 正在运行的文件类型是基于文本的
  • 无效的文件类型为二进制

这告诉我可能问题在于上传过程处理非文本数据的方式存在某种问题。也许它不应该被转码。

无论如何,我建议您使用Wireshark之​​类的工具捕获上传中的TCP / IP流量,以查看上传请求正文是否具有有效的MIME封装。

答案 1 :(得分:1)

我遇到了同样的问题。根据我的研究,该问题与文件类型无关。它与上传文件的大小有一点关系。

我不确定根本原因是上传文件非常大,在文件完全上传到服务器之前,客户端断开连接到服务器(例如超时)。我也验证了猜测。我的测试步骤是,

1. In client, upload a very big file.      
2. Before the get the response from server, which means is uploading file; 
   close the test client
3. check the server side, you will see the issue.

所以要修复它,我的解决方案是在客户端添加超时时间。