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.