Datei-Upload mit zusätzlichen Daten im Jersey RESTful Web Service
Um den Datei-Upload zusammen mit anderen Objektdaten in einem einzigen REST-Aufruf zu erreichen, ändern Sie die Methode uploadFileWithData wie folgt:
@POST @Path("/upload2") @Consumes({MediaType.MULTIPART_FORM_DATA, MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON}) public Response uploadFileWithData( @FormDataParam("file") InputStream fileInputStream, @FormDataParam("file") FormDataContentDisposition contentDispositionHeader, @FormDataParam("emp") String employeeJson) { // Deserialize the employee data from JSON JacksonJsonProvider provider = new JacksonJsonProvider(); Employee emp = provider.readFrom(Employee.class, employeeJson); // ...business logic... }
Key Punkte:
Postman Fehlerbehebung:
Postman legt möglicherweise nicht automatisch Inhaltstypen für einzelne Körperteile fest. Um dies zu beheben:
Alternative Lösung:
Alternativ können Sie den Content-Type explizit in Ihrer REST-Methode festlegen:
@POST @Path("/upload2") @Consumes(MediaType.MULTIPART_FORM_DATA) public Response uploadFileAndJSON( @FormDataParam("emp") FormDataBodyPart jsonPart, @FormDataParam("file") FormDataBodyPart bodyPart) { jsonPart.setMediaType(MediaType.APPLICATION_JSON_TYPE); Employee emp = jsonPart.getValueAs(Employee.class); // ...business logic... }
Hinweis:
Wenn Wenn Sie einen anderen Connector als HttpUrlConnection verwenden, können Probleme auftreten, wie in den zugehörigen Kommentaren beschrieben.
Das obige ist der detaillierte Inhalt vonWie lade ich Dateien mit zusätzlichen JSON-Daten in einen RESTful-Webdienst von Jersey hoch?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!