Saya menggunakan Jersey untuk mengimplementasikan RESTful API yang utamanya mengambil dan melayani data yang dikodekan JSON. Tetapi saya memiliki beberapa situasi di mana saya perlu mencapai yang berikut:
- Ekspor dokumen yang dapat diunduh, seperti PDF, XLS, ZIP, atau file biner lainnya.
- Ambil data multi bagian, seperti JSON ditambah file XLS yang diunggah
Saya memiliki klien web berbasis JQuery satu halaman yang membuat panggilan AJAX ke layanan web ini. Saat ini, ia tidak melakukan pengiriman formulir, dan menggunakan GET dan POST (dengan objek JSON). Apakah saya harus menggunakan postingan formulir untuk mengirim data dan file biner terlampir, atau dapatkah saya membuat permintaan multi bagian dengan file biner JSON plus?
Lapisan layanan aplikasi saya saat ini membuat ByteArrayOutputStream saat membuat file PDF. Apa cara terbaik untuk mengeluarkan aliran ini ke klien melalui Jersey? Saya telah membuat MessageBodyWriter, tetapi saya tidak tahu bagaimana menggunakannya dari sumber Jersey. Apakah itu pendekatan yang benar?
Saya telah melihat-lihat sampel yang disertakan dengan Jersey, tetapi belum menemukan apa pun yang menggambarkan cara melakukan salah satu dari hal ini. Jika penting, saya menggunakan Jersey dengan Jackson untuk melakukan Object-> JSON tanpa langkah XML dan saya tidak benar-benar menggunakan JAX-RS.
Response
objek. Dengan begitu Anda dapat dengan mudah mengontrol tipe mediatipe, kode respons HTTP, dll. Beri tahu saya jika Anda ingin saya mengirimkan kode.Saya harus mengembalikan file rtf dan ini berhasil untuk saya.
sumber
Saya menggunakan kode ini untuk mengekspor file excel (xlsx) (Apache Poi) di jersey sebagai lampiran.
sumber
Berikut contoh lainnya. Saya membuat QRCode sebagai PNG melalui file
ByteArrayOutputStream
. Sumber daya mengembalikanResponse
objek, dan data aliran adalah entitas.Untuk menggambarkan penanganan kode respon, saya telah menambahkan penanganan cache header (
If-modified-since
,If-none-matches
, dll).Tolong jangan memukuli saya jika
stream.toByteArray()
tidak ada memori yang bijaksana :) Ini berfungsi untuk file <1KB PNG saya ...sumber
Saya telah membuat layanan Jersey 1.17 saya dengan cara berikut:
FileStreamingOutput
GET
Dan klien, jika Anda membutuhkannya:
Client
sumber
Contoh ini menunjukkan cara mempublikasikan file log di JBoss melalui sumber daya lainnya. Perhatikan bahwa metode get menggunakan antarmuka StreamingOutput untuk mengalirkan konten file log.
}
sumber
Menggunakan Jersey 2.16 Mengunduh file sangat mudah.
Di bawah ini adalah contoh untuk file ZIP
sumber
Saya menemukan yang berikut bermanfaat bagi saya dan saya ingin berbagi jika itu membantu Anda atau orang lain. Saya menginginkan sesuatu seperti MediaType.PDF_TYPE, yang tidak ada, tetapi kode ini melakukan hal yang sama:
Lihat http://jersey.java.net/nonav/apidocs/1.1.0-ea/contribs/jersey-multipart/com/sun/jersey/multipart/file/DefaultMediaTypePredictor.CommonMediaTypes.html
Dalam kasus saya, saya memposting dokumen PDF ke situs lain:
Kemudian p diteruskan sebagai parameter kedua ke post ().
Tautan ini sangat membantu saya dalam menyusun cuplikan kode ini: http://jersey.576304.n2.nabble.com/Multipart-Post-td4252846.html
sumber
Ini berfungsi dengan baik dengan saya url: http://example.com/rest/muqsith/get-file?filePath=C : \ Users \ I066807 \ Desktop \ test.xml
sumber
Response.ok("file path null").build();
, apakah benar-benar oke? Anda mungkin harus menggunakan sesuatu sepertiResponse.status(Status.BAD_REQUEST).entity(...
Kode contoh lain di mana Anda dapat mengunggah file ke layanan REST, layanan REST membuat file zip, dan klien mengunduh file zip dari server. Ini adalah contoh yang baik dalam menggunakan input dan output stream biner menggunakan Jersey.
https://stackoverflow.com/a/32253028/15789
Jawaban ini telah saya posting di utas lain. Semoga ini membantu.
sumber