Mengonversi Spring MultipartFile ke File

1. Ikhtisar

Dalam tutorial singkat ini, kami akan membahas berbagai cara untuk mengubah Spring MultipartFile menjadi File .

2. MultipartFile # getBytes

MultipartFile memiliki getBytes () metode yang mengembalikan sebuah array byte dari isi file. Kita dapat menggunakan metode ini untuk menulis byte ke file :

MultipartFile multipartFile = new MockMultipartFile("sourceFile.tmp", "Hello World".getBytes()); File file = new File("src/main/resources/targetFile.tmp"); try (OutputStream os = new FileOutputStream(file)) { os.write(multipartFile.getBytes()); } assertThat(FileUtils.readFileToString(new File("src/main/resources/targetFile.tmp"), "UTF-8")) .isEqualTo("Hello World");

Metode getBytes () berguna untuk instance di mana kita ingin melakukan operasi tambahan pada file sebelum menulis ke disk , seperti menghitung hash file.

3. MultipartFile # getInputStream

Berikutnya, lihat mari di MultipartFile 's getInputStream () metode :

MultipartFile multipartFile = new MockMultipartFile("sourceFile.tmp", "Hello World".getBytes()); InputStream initialStream = multipartFile.getInputStream(); byte[] buffer = new byte[initialStream.available()]; initialStream.read(buffer); File targetFile = new File("src/main/resources/targetFile.tmp"); try (OutputStream outStream = new FileOutputStream(targetFile)) { outStream.write(buffer); } assertThat(FileUtils.readFileToString(new File("src/main/resources/targetFile.tmp"), "UTF-8")) .isEqualTo("Hello World");

Di sini kita menggunakan metode getInputStream () untuk mendapatkan InputStream , membaca byte dari InputStream, dan menyimpannya dalam buffer [] byte . Kemudian kami membuat File dan OutputStream untuk menulis konten buffer .

Pendekatan getInputStream () berguna dalam kasus di mana kita perlu menggabungkan InputStream di InputStream lain , misalnya GZipInputStream jika file yang diunggah telah di-gzip.

4. MultipartFile # transferTo

Akhirnya, mari kita lihat di MultipartFile 's transferTo () metode :

MultipartFile multipartFile = new MockMultipartFile("sourceFile.tmp", "Hello World".getBytes()); File file = new File("src/main/resources/targetFile.tmp"); multipartFile.transferTo(file); assertThat(FileUtils.readFileToString(new File("src/main/resources/targetFile.tmp"), "UTF-8")) .isEqualTo("Hello World");

Dengan menggunakan metode transferTo () , kita hanya perlu membuat File yang ingin kita tulis byte-nya, lalu meneruskan file itu ke metode transferTo () .

Metode transferTo () berguna ketika MultipartFile hanya perlu ditulis ke File .

5. Kesimpulan

Dalam tutorial ini, kami mengeksplorasi cara mengubah Spring MultipartFile menjadi File .

Seperti biasa, semua contoh kode dapat ditemukan di GitHub.