Heim >Java >javaLernprogramm >Wie lade ich Dateien und zugehörige Daten gleichzeitig in einen RESTful-Webdienst von Jersey hoch?

Wie lade ich Dateien und zugehörige Daten gleichzeitig in einen RESTful-Webdienst von Jersey hoch?

Patricia Arquette
Patricia ArquetteOriginal
2024-11-30 22:50:11465Durchsuche

How to Upload Files and Accompanying Data Simultaneously in a Jersey RESTful Web Service?

Datei-Upload mit Begleitdaten im Jersey RESTful Web Service

Beim Erstellen von Mitarbeitern in einem System möchten Sie möglicherweise ein Bild mit einbinden ihre persönlichen Daten. Obwohl es möglich ist, dies mit separaten REST-Aufrufen zu erreichen, ist es effizienter, dies mit einem einzigen Aufruf zu tun. Dieser Artikel bietet eine Lösung für dieses Problem und ermöglicht Ihnen den gleichzeitigen Empfang von Datei- und Mitarbeiterdaten.

Um dies zu erreichen, ändern Sie die Java-Methode wie folgt:

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

Im JSON Struktur sind die Mitarbeiterdaten nun Teil der mehrteiligen Anfrage:

{
    "emp": {
        "Name": "John",
        "Age": 23,
        "Email": "[email protected]",
        "Adrs": {
            "DoorNo": "12-A",
            "Street": "Street-11",
            "City": "Bangalore",
            "Country": "Karnataka"
        }
    }
}

Zusätzlich Überlegungen

  • Jersey erlaubt nicht mehrere Inhaltstypen innerhalb einer einzelnen Anfrage.
  • Einige Clients unterstützen möglicherweise nicht das Festlegen von Inhaltstypen für einzelne Körperteile (z. B. Postman und des Browsers bei Verwendung von FormData).
  • Um dieses Problem zu beheben, legen Sie den Content-Type explizit fest, bevor Sie den JSON deserialisieren Daten:
jsonPart.setMediaType(MediaType.APPLICATION_JSON_TYPE);
Employee emp = jsonPart.getValueAs(Employee.class);
  • Alternativ können Sie einen String-Parameter verwenden und den JSON mit einer Bibliothek wie Jackson ObjectMapper deserialisieren.

Indem Sie diese Schritte befolgen, Sie können mit Jersey erfolgreich eine Datei und die zugehörigen Mitarbeiterdaten in einem einzigen REST-Aufruf hochladen.

Das obige ist der detaillierte Inhalt vonWie lade ich Dateien und zugehörige 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