Преобразуване на Spring MultipartFile във файл

1. Общ преглед

В този бърз урок ще разгледаме различни начини за преобразуване на Spring MultipartFile във файл .

2. MultipartFile # getBytes

MultipartFile има getBytes () метод , който връща масив от байтове на съдържанието на файла. Можем да използваме този метод, за да запишем байтовете във файл :

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

Методът getBytes () е полезен за случаи, когато искаме да извършим допълнителни операции върху файла преди запис на диск , като изчисляване на хеш на файл.

3. MultipartFile # getInputStream

На следващо място, погледнете Нека разгледаме MultipartFile е getInputStream () метод :

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

Тук използваме метода getInputStream () , за да получим InputStream , четем байтовете от InputStream и ги съхраняваме в буфера [] на байта . След това създаваме File и OutputStream, за да напишем съдържанието на буфера .

Подходът getInputStream () е полезен в случаите, когато трябва да обвием InputStream в друг InputStream , да речем например GZipInputStream, ако каченият файл е gzipped.

4. MultipartFile # transferTo

И накрая, нека да разгледаме най- MultipartFile е transferTo () метод :

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

Използвайки метода transferTo () , ние просто трябва да създадем файла , в който искаме да запишем байтовете, след което да го предадем на метода transferTo () .

Методът transferTo () е полезен, когато MultipartFile трябва само да бъде записан във файл .

5. Заключение

В този урок проучихме начините за конвертиране на Spring MultipartFile във файл .

Както обикновено, всички примери за код могат да бъдат намерени в GitHub.