Saya menggunakan Spring MVC dan ini adalah metode saya:
/**
* Upload single file using Spring Controller.
*/
@RequestMapping(value = "/uploadFile", method = RequestMethod.POST)
public @ResponseBody ResponseEntity<GenericResponseVO<? extends IServiceVO>> uploadFileHandler(
@RequestParam("name") String name,
@RequestParam("file") MultipartFile file,
HttpServletRequest request,
HttpServletResponse response) {
if (!file.isEmpty()) {
try {
byte[] bytes = file.getBytes();
// Creating the directory to store file
String rootPath = System.getProperty("catalina.home");
File dir = new File(rootPath + File.separator + "tmpFiles");
if (!dir.exists()) {
dir.mkdirs();
}
// Create the file on server
File serverFile = new File(dir.getAbsolutePath() + File.separator + name);
BufferedOutputStream stream = new BufferedOutputStream(new FileOutputStream(serverFile));
stream.write(bytes);
stream.close();
System.out.println("Server File Location=" + serverFile.getAbsolutePath());
return null;
} catch (Exception e) {
return null;
}
}
}
Saya harus melewati id sesi di tukang pos dan juga file. Bagaimana saya bisa melakukan itu?
java
json
spring-mvc
postman
Harikrishnan KN
sumber
sumber
POST
? Bagaimana denganPUT
?String
biasa. Mengapa tidak dipetakan ke DTO saya?@PostMapping ( value = "/byImageFile", consumes = { "multipart/form-data" }) public ResponseEntity<?> postMap( @RequestPart ( "imageFile") MultipartFile imageFile, @RequestPart ( "fieldsToExtract") RequestDto requestDto )
Saya tidak dapat mengirim balasan dari tukang pos sama sekali dalam kasus iniRequestDto
secara otomatis. Saya menganggapnya sebagai string, menguraiJson
dan memetakannyaRequestDto
secara eksplisit.Panduan Visual Yang Hilang
Pertama - tama Anda harus menemukan dropdown pucat-abu-ke-putih
File
yang hampir tidak terlihat yang merupakan kunci ajaib yang membuka kunciChoose Files
tombol.Setelah Anda memilih
POST
, lalu memilihBody->form-data
, lalu menemukan dropdown File, dan kemudian pilih 'File', hanya kemudian tombol 'Choose Files' akan muncul secara ajaib:sumber
Mungkin Anda bisa melakukannya dengan cara ini:
sumber
Seperti ini :
Tubuh -> formulir-data -> pilih file
Anda harus menulis "file" bukan "nama"
Anda juga dapat mengirim data JSON dari Tubuh -> bidang mentah. (Cukup rekatkan string JSON)
sumber
sumber
Jika Anda membutuhkan seperti Upload file di multipart menggunakan formulir data dan kirim json data (Dto objek) di sama POST Permintaan
Dapatkan objek JSON Anda sebagai String di Controller dan membuatnya Deserialize dengan menambahkan baris ini
sumber
Pilih [Jenis Konten] dari [TAMPILKAN KOLOM] lalu atur tipe konten "aplikasi / json" ke parameter teks json.
sumber
Jika seseorang membutuhkan:
body -> form-data
Tambahkan nama bidang sebagai array
sumber
Jika seseorang ingin mengirim data json dalam format form-data hanya perlu mendeklarasikan variabel seperti ini
Tukang pos:
Seperti yang Anda lihat, parameter deskripsi akan dalam format json dasar, hasil dari itu:
sumber
Saya harus mengirimkan keduanya: file dan integer. Saya melakukannya dengan cara ini:
diperlukan untuk mengirimkan file untuk diunggah: melakukannya sesuai jawaban Sumit.
Jenis permintaan: POST
Tubuh -> formulir-data
di bawah judul KUNCI , masukkan nama variabel ('file' dalam kode backend saya).
di backend:
file = request.files['file']
Di sebelah 'file', ada kotak drop-down yang memungkinkan Anda untuk memilih antara 'File' atau 'Teks'. Memilih 'File' dan di bawah judul VALUE , 'Select files' muncul. Mengklik ini yang membuka jendela untuk memilih file.
2. diperlukan untuk melewati bilangan bulat:
pergi ke:
Params
memasukkan nama variabel (mis .: id) di bawah KUNCI dan nilainya (mis: 1) di bawah VALUE
di backend:
Bekerja!
sumber
Gunakan kode di bawah ini di sisi sandaran:
sumber
Untuk setiap kunci data formulir, Anda bisa mengatur Content-Type, ada tombol tukang pos di sebelah kanan untuk menambahkan kolom Type-Type, dan Anda tidak perlu mengurai json dari string di dalam Controller Anda.
sumber
Jika Anda ingin membuat
PUT
permintaan, lakukan saja semuanya sebagaiPOST
permintaan tetapi tambahkan_method
=>PUT
keform-data
parameter Anda .sumber
Cara untuk mengirim data mulitpart yang bertentangan dengan file dengan data json adalah sebagai berikut, kita perlu mengatur tipe konten dari bidang kunci json masing-masing ke 'application / json' di tab postman body seperti berikut:
Gambar tautan ini akan memberi tahu Anda tentang pengiriman gambar dengan data json
sumber
Jika Anda menggunakan cookie untuk menjaga sesi, Anda dapat menggunakan interseptor untuk membagikan cookie dari browser ke tukang pos.
Juga untuk mengunggah file, Anda dapat menggunakan tab formulir-data di bawah tab badan di tukang pos, Di mana Anda dapat memberikan data dalam format nilai kunci dan untuk setiap tombol Anda dapat memilih jenis teks / file nilai. ketika Anda memilih opsi jenis file muncul untuk mengunggah file.
sumber
masukkan deskripsi gambar di sini
rest controller [kelas aplikasi applicationinitializer kelas untuk multipart con [tukang pos pic] 2 gbr
sumber