Conversion d'un fichier Spring MultipartFile en fichier

1. Vue d'ensemble

Dans ce rapide didacticiel, nous aborderons différentes manières de convertir un fichier Spring MultipartFile en fichier .

2. MultipartFile # getBytes

MultipartFile a une méthode getBytes () qui renvoie un tableau d'octets du contenu du fichier. Nous pouvons utiliser cette méthode pour écrire les octets dans un fichier :

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

La méthode getBytes () est utile pour les instances où nous voulons effectuer des opérations supplémentaires sur le fichier avant d'écrire sur le disque , comme le calcul d'un hachage de fichier.

3. MultipartFile # getInputStream

Ensuite, le regard let à MultipartFile de getInputStream () méthode :

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

Ici, nous utilisons la méthode getInputStream () pour obtenir le InputStream , lire les octets de InputStream et les stocker dans le tampon byte [] . Ensuite, nous créons un fichier et un OutputStream pour écrire le contenu du tampon .

L' approche getInputStream () est utile dans les cas où nous devons envelopper l' InputStream dans un autre InputStream , par exemple un GZipInputStream si le fichier téléchargé a été compressé.

4. MultipartFile # transferTo

Enfin, le regard let à MultipartFile de transferTo () méthode :

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

En utilisant la méthode transferTo () , nous devons simplement créer le fichier dans lequel nous voulons écrire les octets, puis passer ce fichier à la méthode transferTo () .

La méthode transferTo () est utile lorsque le MultipartFile doit uniquement être écrit dans un fichier .

5. Conclusion

Dans ce didacticiel, nous avons exploré les moyens de convertir un fichier Spring MultipartFile en fichier .

Comme d'habitude, tous les exemples de code peuvent être trouvés sur GitHub.