Menukar Spring MultipartFile ke Fail

1. Gambaran keseluruhan

Dalam tutorial ringkas ini, kita akan membahas pelbagai cara untuk menukar Spring MultipartFile menjadi File .

2. MultipartFile # getBytes

MultipartFile mempunyai getBytes () kaedah pulangan tatasusunan bait kandungan fail. Kita boleh menggunakan kaedah ini untuk menulis bait ke fail :

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");

Kaedah getBytes () berguna untuk keadaan di mana kita ingin melakukan operasi tambahan pada fail sebelum menulis ke cakera , seperti mengira hash fail.

3. MultipartFile # getInputStream

Seterusnya, melihat let di MultipartFile 's getInputStream () kaedah :

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 kaedah getInputStream () untuk mendapatkan InputStream , membaca bait dari InputStream, dan menyimpannya dalam buffer byte [] . Kemudian kami membuat File dan OutputStream untuk menulis kandungan buffer .

Pendekatan getInputStream () berguna dalam keadaan di mana kita perlu membungkus InputStream di InputStream yang lain , katakan misalnya GZipInputStream jika fail yang dimuat naik dizip .

4. MultipartFile # transferTo

Akhir sekali, melihat let di MultipartFile 's transferTo () kaedah :

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 kaedah transferTo () , kita hanya perlu membuat File yang ingin kita tuliskan bait, kemudian meneruskan fail tersebut ke kaedah transferTo () .

Kaedah transferTo () berguna apabila MultipartFile hanya perlu ditulis ke Fail .

5. Kesimpulan

Dalam tutorial ini, kami meneroka cara menukar Spring MultipartFile ke File .

Seperti biasa, semua contoh kod boleh didapati di GitHub.