2010-11-11 69 views
14

我有一個標準上傳終點在新澤西州:如何獲得MIME類型上傳文件的澤西

@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-- 

回答

28

我通過讓澤西在我的方法注入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 
} 
+1

在這裏復活一個死的問題,但你是如何做到這一點?我遇到了同樣的問題(試圖使用URLConnection.guessContentTypeFromStream,但它似乎在文本文件上失敗),並且當我添加一個注入的形式參數[@FormDataParam(「my_file」)BodyPart body]時,它只是獲取設置爲空。 – Arkaaito 2011-11-03 02:09:48

+0

@Arkaaito我有一段時間沒有碰過這個,但是你有沒有看過你的端點的MultiPart參數?你不需要在FormDataParam中加前綴,你可以從中獲取正文部分。 – 2011-11-03 15:07:09

+7

BigRedBettaFish的評論:「只需注意接受的答案,獲取BodyPart,即可使用: '@FormDataParam(」my_file「)FormDataBodyPart body' 然後,您可以使用'body.getMediaType()'」 – 2012-02-17 23:08:39