Rumah > Java > javaTutorial > Bagaimana untuk Memuat naik Fail dengan Data Entiti Terbenam dalam Perkhidmatan Web RESTful Jersey?

Bagaimana untuk Memuat naik Fail dengan Data Entiti Terbenam dalam Perkhidmatan Web RESTful Jersey?

Patricia Arquette
Lepaskan: 2024-12-05 14:10:14
asal
821 orang telah melayarinya

How to Upload Files with Embedded Entity Data in a Jersey RESTful Web Service?

Muat Naik Fail dengan Data Entiti dalam Perkhidmatan Web RESTful Jersey

Masalah:

Tugasnya adalah untuk mencipta pekerja rakam semasa memuat naik imej yang sepadan dalam satu panggilan REST. Objektifnya adalah untuk mencapai fungsi ini dengan cara yang lancar dan cekap.

Penyelesaian:

Untuk mencapai objektif ini, adalah penting untuk memahami bahawa mempunyai berbilang Kandungan -Jenis dalam permintaan yang sama tidak disokong. Sebaliknya, data pekerja hendaklah disertakan sebagai sebahagian daripada permintaan berbilang bahagian.

Coretan kod berikut menggambarkan cara untuk mencapai ini:

@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") Employee emp) {

    // Business logic

}
Salin selepas log masuk

Di sini, @FormDataParam("emp") anotasi membantu dalam mengekstrak data pekerja daripada permintaan berbilang bahagian. Selain itu, kelas Pekerja hendaklah ditakrifkan dengan kaedah pengambil dan penetap yang sesuai.

Pengujian Berbilang Bahagian:

Untuk menguji kefungsian berbilang bahagian, kelas MultiPartFeature boleh didaftarkan dengan Pelanggan jersi menggunakan daftar(MultiPartFeature.class). Sebagai contoh, coretan ujian berikut boleh digunakan:

@Test
public void testGetIt() throws Exception {
    
    final Client client = ClientBuilder.newBuilder()
        .register(MultiPartFeature.class)
        .build();
    WebTarget t = client.target(Main.BASE_URI).path("multipart").path("upload2");

    FileDataBodyPart filePart = new FileDataBodyPart("file", 
                                             new File("stackoverflow.png"));
    String empPartJson
            = "{ ... employee data as JSON ... }";

    MultiPart multipartEntity = new FormDataMultiPart()
            .field("emp", empPartJson, MediaType.APPLICATION_JSON_TYPE)
            .bodyPart(filePart);
          
    Response response = t.request().post(
            Entity.entity(multipartEntity, multipartEntity.getMediaType()));
    System.out.println(response.getStatus());
    System.out.println(response.readEntity(String.class));

    response.close();
}
Salin selepas log masuk

Ujian ini mencipta permintaan berbilang bahagian yang merangkumi kedua-dua imej dan data pekerja.

Pertimbangan:

  • Sesetengah pelanggan, seperti Posmen, mungkin tidak membenarkan menetapkan Jenis Kandungan bahagian badan individu. Walau bagaimanapun, anda boleh menetapkan Content-Type secara eksplisit sebelum menyahsiri data dengan menggunakan jsonPart.setMediaType(MediaType.APPLICATION_JSON_TYPE);.
  • Sebagai alternatif, anda boleh menggunakan parameter String dan menyahsiri data JSON secara manual menggunakan pustaka JSON .

Atas ialah kandungan terperinci Bagaimana untuk Memuat naik Fail dengan Data Entiti Terbenam dalam Perkhidmatan Web RESTful Jersey?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan