使用 POST 上传 excel 文件时出现 JAX-RS 问题
JAX-RS problems when uploading excel file with POST
我正在开发一个必须接收 excel 文件的 POST 方法,但我遇到了一些问题。这是我的代码
@Path("/rest")
public class RestManager{
[...]
@Path("/uploadFile")
@Consumes(MediaType.MULTIPART_FORM_DATA)
@POST
public Response uploadFile(FormDataMultiPart multipart){
[...]
}
}
当我调用 API 时,在服务器端出现以下错误:
ott 09, 2017 4:58:48 PM org.glassfish.jersey.message.internal.ReaderInterceptorExecutor$TerminalReaderInterceptor aroundReadFrom
GRAVE: MessageBodyReader not found for media type=multipart/form-data, type=class com.sun.jersey.multipart.FormDataMultiPart, genericType=class com.sun.jersey.multipart.FormDataMultiPart.
在我的 web.xml 中,我添加了以下代码:
<init-param>
<param-name>jersey.config.server.provider.classnames</param-name>
<param-value>org.glassfish.jersey.media.multipart.MultiPartFeature</param-value>
</init-param>
我 运行 使用 Tomcat v7.0,我添加了 jersey-multipart-1.18 和 mimepull-1.9.3 来管理多部分数据。
我的客户端响应获得 415 Unsupported Media Type,但是在我用来发送请求的代码中,我为请求 'Content-Type': 'multipart/form-data',因此带有 @Consumes 注释。
任何人都可以给我提示以了解问题出在哪里吗?
你用错了FormDataMultiPart
。您使用的是来自 Jersey 1.x 的 jar,但您应该使用来自 Jersey 2.x 的那个。罐子是 jersey-media-multipart
。添加此 jar 并删除 1.x jar 后,FormDataMultiPart
的包名称将不同。您需要从 org.glassfish.jersey.multipart
.
导入它
另一件事,根据您使用的 Jersey(次要)版本和您使用的 jersey-media-multipart
版本,mimepull
版本也会有所不同。查看 this link 并单击您正在使用的版本。然后向下滚动到 "Compile Dependencies"。你会看到 mimepull
。这是您需要的版本,它与您正在使用的 jersey-media-multipart
版本兼容。
我正在开发一个必须接收 excel 文件的 POST 方法,但我遇到了一些问题。这是我的代码
@Path("/rest")
public class RestManager{
[...]
@Path("/uploadFile")
@Consumes(MediaType.MULTIPART_FORM_DATA)
@POST
public Response uploadFile(FormDataMultiPart multipart){
[...]
}
}
当我调用 API 时,在服务器端出现以下错误:
ott 09, 2017 4:58:48 PM org.glassfish.jersey.message.internal.ReaderInterceptorExecutor$TerminalReaderInterceptor aroundReadFrom
GRAVE: MessageBodyReader not found for media type=multipart/form-data, type=class com.sun.jersey.multipart.FormDataMultiPart, genericType=class com.sun.jersey.multipart.FormDataMultiPart.
在我的 web.xml 中,我添加了以下代码:
<init-param>
<param-name>jersey.config.server.provider.classnames</param-name>
<param-value>org.glassfish.jersey.media.multipart.MultiPartFeature</param-value>
</init-param>
我 运行 使用 Tomcat v7.0,我添加了 jersey-multipart-1.18 和 mimepull-1.9.3 来管理多部分数据。
我的客户端响应获得 415 Unsupported Media Type,但是在我用来发送请求的代码中,我为请求 'Content-Type': 'multipart/form-data',因此带有 @Consumes 注释。
任何人都可以给我提示以了解问题出在哪里吗?
你用错了FormDataMultiPart
。您使用的是来自 Jersey 1.x 的 jar,但您应该使用来自 Jersey 2.x 的那个。罐子是 jersey-media-multipart
。添加此 jar 并删除 1.x jar 后,FormDataMultiPart
的包名称将不同。您需要从 org.glassfish.jersey.multipart
.
另一件事,根据您使用的 Jersey(次要)版本和您使用的 jersey-media-multipart
版本,mimepull
版本也会有所不同。查看 this link 并单击您正在使用的版本。然后向下滚动到 "Compile Dependencies"。你会看到 mimepull
。这是您需要的版本,它与您正在使用的 jersey-media-multipart
版本兼容。