Heim >Java >javaLernprogramm >Wie lade ich eine Datei und JSON-Daten gleichzeitig in einen RESTful-Webdienst von Jersey hoch?

Wie lade ich eine Datei und JSON-Daten gleichzeitig in einen RESTful-Webdienst von Jersey hoch?

Susan Sarandon
Susan SarandonOriginal
2024-12-06 14:44:11734Durchsuche

How to Upload a File and JSON Data Simultaneously in a Jersey RESTful Web Service?

Datei-Upload zusammen mit anderen Objekten im Jersey RESTful Web Service

Problem:

Sie Sie möchten mit Jersey einen Mitarbeiterdatensatz mit Bild- und Mitarbeiterdaten in einem einzigen REST-API-Aufruf erstellen, aber die aktuelle Implementierung löst einen Fehler in Chrome aus Postbote.

Antwort:

Um den gleichzeitigen Datei-Upload und die JSON-Datenübertragung zu ermöglichen, müssen die JSON-Daten in der mehrteiligen Anfrage enthalten sein. Hier ist eine modifizierte Version Ihres Codeausschnitts:

@POST
@Path("/upload2")
@Consumes({MediaType.MULTIPART_FORM_DATA})
public Response uploadFileWithData(
        @FormDataParam("file") InputStream fileInputStream,
        @FormDataParam("file") FormDataContentDisposition contentDispositionHeader,
        @FormDataParam("emp") Employee emp) {

//..... business login

}

Die wichtigste Änderung ist das Hinzufügen von @FormDataParam("emp"), um die Mitarbeiterdaten in die mehrteilige Anfrage einzuschließen.

Zusätzliche Hinweise:

  • Wenn Sie auf den Fehler „Keine Injektionsquelle für einen Parameter vom Typ public gefunden“ stoßen javax.ws.rs.core.Response“ stellen Sie bei der Verwendung des neuen Codes sicher, dass die richtigen Jersey-Konfigurationen für die Verarbeitung mehrteiliger Anforderungen in Ihrem Servercode vorhanden sind.
  • Einige REST-Clients, wie die standardmäßigen FormData-Funktionen des Browsers unterstützt möglicherweise nicht das Festlegen von Inhaltstypen für einzelne mehrteilige Teile. Um dieses Problem zu beheben, können Sie den Content-Type für den JSON-Teil explizit festlegen, bevor Sie die Daten auf der Serverseite deserialisieren:
@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);
}

Das obige ist der detaillierte Inhalt vonWie lade ich eine Datei und JSON-Daten gleichzeitig in einen RESTful-Webdienst von Jersey hoch?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn