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

Java 如何在Jersey中获取上载文件的MIME类型,java,file-upload,upload,mime-types,jersey,Java,File Upload,Upload,Mime Types,Jersey,我在泽西岛有一个标准上载端点: @POST @Secure @Consumes("multipart/form-data") public Response upload( @Context final HttpHeaders hh, @FormDataParam("fileaaa") final FormDataContentDisposition disposition, @FormDataParam("fileaaa") final Inpu

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

@POST
@Secure
@Consumes("multipart/form-data")
public Response upload( @Context final HttpHeaders hh,
            @FormDataParam("fileaaa") final FormDataContentDisposition disposition,
            @FormDataParam("fileaaa") final InputStream input,
如何获取上载文件的MIME类型

如果我做了
disposition.getType
,这会得到表单的MIME类型;在这种情况下,
表单数据

我知道信息在某处;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--

我通过让Jersey在我的方法中注入一个参数来解决这个问题。身体部位的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
}

在这里复活一个死问题,但你是怎么做到的?我遇到了同样的问题(尝试使用URLConnection.guessContentTypeFromStream,但在文本文件上似乎失败),当我添加一个注入参数[@FormDataParam(“my_file”)BodyPart body]形式时,它只是被设置为null。@ArkaIto我已经有一段时间没有接触过这个了,但是您是否查看了端点的多部分参数?你不需要在它前面加上FormDataParam,你可以从中得到身体部位。BigRedBettaFish的评论:“只需对接受的答案做一个说明,要得到身体部位,你可以使用:
@FormDataParam(“my_file”)FormDataCodePart body
,然后你可以使用答案中的
body.getMediaType()
”链接断开。@mdw7326是的,答案真的很古老,从那时起他们改变了Jersey JavaDoc的位置。我更新到了最近的一个。