Java Jax rs-只获取有效负载中的文件体-删除头



我必须使用UI/Postman客户端将二进制文件上传到我的服务器。我的Rest API后端代码是:

@POST
@Produces({JSONHeaders.MEDIA_TYPE_JSONAPI, MediaType.APPLICATION_JSON})
@Path("loadLicense")
@Consumes(MediaType.MULTIPART_FORM_DATA)
public Response loadLicense2(@ApiParam("load a license") File input) {
....
}

但我得到的文件中添加了标题详细信息,我不需要。文件内容类似于:

----------------------------013134317098674079511595^M
Content-Disposition: form-data; name="file"; filename="license.lic"^M
Content-Type: application/octet-stream^M
^M
^@^@^T.^@^@m.....^@^@^@^K^@^A^@^@^@^@^C^@^@^@(^@.^E^@^@^@^K^@.^@^@^@^G.^@^@^@^K^@.^@^@^@^@^B^@^@^@^K^@.^@^@^@^@^@^@^@^@^K^@.^@^@^@^@^F^@^@^@^K^@.^@^@^
^@^@^@^U^@^N^BGR^@^@^@^@^M^@^G^Bc^@^@^@^@^K^@^O^B1.0^@^@^@^@^Q^@4^Bpermanent^@^@^@^@^G^@.
^G.^V......I..^HC_.^^.^U...Y..G.^K.R.^?^O&..^.{V.Z.......h^B.<^O....w'#bk.^B]..*...8.W93...Z......     ..g.a+.....,^M
----------------------------013134317098674079511595--^M

但我只需要二进制内容。有办法做到这一点吗?

注意:我尝试了@FormParam-它不起作用,我得到了这个错误The @FormParam is utilized when the content type of the request entity is not application/x-www-form-urlencoded]

已尝试@FormDataParam-无法在代码中解析它。

您可能需要使用@FormDataParam而不是@FormParam,这取决于您如何通过Postman发送数据。它们有不同的用途,即用于不同的MIME类型:

  • @FormParam用于MIME类型application/x-www-form-urlencoded(常量MediaType.APPLICATION_FORM_URLENCODED(

  • @FormDataParam用于multipart/form-data(常数MediaType.MULTIPART_FORM_DATA(

以下代码段期望通过表单数据发送文件:

@POST
@Produces({JSONHeaders.MEDIA_TYPE_JSONAPI, MediaType.APPLICATION_JSON})
@Path("loadLicense")
@Consumes(MediaType.MULTIPART_FORM_DATA)
public Response loadLicense2(
@FormDataParam("file") InputStream istream,
@FormDataParam("file") FormDataContentDisposition disp) {
}

输入流包含二进制数据,第二个参数为您提供有关上传文件的一些信息,例如文件名。

你需要jersey-media-multipart工件:

https://mvnrepository.com/artifact/org.glassfish.jersey.media/jersey-media-multipart

<dependency>
<groupId>org.glassfish.jersey.media</groupId>
<artifactId>jersey-media-multipart</artifactId>
<version>3.0.2</version>
</dependency>

相关内容

  • 没有找到相关文章

最新更新