如何在Jersey中获取上传文件的MIME类型

Cri*_*bie 17 java upload file-upload jersey mime-types

我在泽西岛有一个标准的上传端点:

@POST
@Secure
@Consumes("multipart/form-data")
public Response upload( @Context final HttpHeaders hh,
            @FormDataParam("fileaaa") final FormDataContentDisposition disposition,
            @FormDataParam("fileaaa") final InputStream input,
Run Code Online (Sandbox Code Playgroud)

如何获取上传文件的MIME类型?

如果我这样做,请disposition.getType获取表单的MIME类型; 在这种情况下form-data.

我知道信息在某处; HTTP消息应该是这样的:

-----------------------------7d01ecf406a6
Content-Disposition: form-data; name="input_text"

mytext

-----------------------------7d01ecf406a6
Content-Disposition: form-data; name="fileaaa";
filename="C:\Inetpub\wwwroot\Upload\pic.gif"
Content-Type: image/gif

(binary content)
-----------------------------7d01ecf406a6--
Run Code Online (Sandbox Code Playgroud)

Cri*_*bie 35

我通过让Jersey 在我的方法中注入一个BodyPart参数来解决这个问题.身体部位的getMediaType()给了我所需要的东西:

@POST
@Secure
@Consumes(MediaType.MULTIPART_FORM_DATA)
public Response upload(/*other parms */,  @FormDataParam("fileaaa") final FormDataBodyPart body) {
   String mimeType = body.getMediaType().toString();
   //handle upload
}
Run Code Online (Sandbox Code Playgroud)

  • BigRedBettaFish的评论:"只是对接受的答案的说明,获取BodyPart,你可以使用:`@FormDataParam("my_file")FormDataBodyPart body`然后你可以使用`body.getMediaType()`" (8认同)