【问题标题】:How to get MIME type of uploaded file in Jersey如何在泽西岛获取上传文件的 MIME 类型
【发布时间】:2011-05-08 14:42:36
【问题描述】:

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

@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 类型;在这种情况下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--

【问题讨论】:

    标签: java file-upload upload mime-types jersey


    【解决方案1】:

    我通过让 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
    }
    

    【讨论】:

    • 在这里复活了一个死问题,但是你是怎么做到的?我遇到了同样的问题(试图使用 URLConnection.guessContentTypeFromStream 但它似乎在文本文件上失败),当我添加表单 [@FormDataParam("my_file") BodyPart body] 的注入参数时,它只是得到设置为空。
    • @Arkaaito 我有一段时间没接触过这个了,但是您是否查看过端点的 MultiPart 参数?你不需要在它前面加上 FormDataParam,你可以从中获取身体部分。
    • BigRedBettaFish 的评论:“只是对已接受答案的注释,要获取 BodyPart,您可以使用:@FormDataParam("my_file") FormDataBodyPart body 然后您可以使用body.getMediaType()
    • 答案中的链接已损坏。
    • @mdw7326 是的,答案真的很老了,从那时起他们改变了 Jersey JavaDoc 的位置。我更新到了一个更新的版本。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-06-10
    • 2014-10-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-02
    • 1970-01-01
    相关资源
    最近更新 更多