2010-11-11 1 views
14

Ich habe einen Standard-Upload-Endpunkt in Jersey zu bekommen?Wie MIME-Typ der hochgeladenen Datei in Jersey

Wenn ich disposition.getType mache, bekommt dies den MIME-Typ des Formulars; in diesem Fall form-data.

Ich weiß, dass die Informationen irgendwo da sind; sollte die HTTP-Nachricht so etwas wie:

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

Antwort

28

ich dies, indem man Jersey einen BodyPart Parameter in meinem Verfahren injiziert gelöst. getMediaType() auf dem Körperteil gibt mir, was ich brauchte:

@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

Auferstehung einer toten Frage hier, aber wie hast du das getan? Ich habe das gleiche Problem (versuchte URLConnection.guessContentTypeFromStream zu verwenden, aber es scheint auf Textdateien fehlzuschlagen), und wenn ich einen injizierten Parameter der Form [@FormDataParam ("my_file") BodyPart body] hinzufüge, wird es einfach auf null setzen. – Arkaaito

+0

@Arkaaito Ich habe das schon lange nicht mehr gesehen, aber haben Sie sich die MultiPart-Parameter für Ihren Endpunkt angesehen? Sie müssen es nicht mit FormDataParam voranstellen und Sie können die Körperteile von diesem erhalten. –

+7

BigRedBettaFish's Kommentar: "Nur eine Notiz zu der akzeptierten Antwort, um das BodyPart zu bekommen, können Sie verwenden: ' @FormDataParam ("meine_Datei") FormDataBodyPart body' Dann können Sie 'body.getMediaType()' " –

Verwandte Themen