Konvertieren einer Spring MultipartFile in eine Datei

1. Übersicht

In diesem kurzen Tutorial werden verschiedene Möglichkeiten zum Konvertieren einer Spring MultipartFile in eine Datei behandelt .

2. MultipartFile # getBytes

MultipartFile verfügt über eine getBytes () -Methode , die ein Byte-Array des Dateiinhalts zurückgibt. Wir können diese Methode verwenden, um die Bytes in eine Datei zu schreiben :

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

Die Methode getBytes () ist nützlich für Fälle, in denen wir zusätzliche Operationen an der Datei ausführen möchten, bevor wir auf die Festplatte schreiben , z. B. das Berechnen eines Datei-Hash.

3. MultipartFile # getInputStream

Als nächstes wollen wir einen Blick auf MultipartFile ‚s getInputStream () Methode :

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

Hier verwenden wir die Methode getInputStream () , um den InputStream abzurufen , die Bytes aus dem InputStream zu lesen und sie im Byte [] -Puffer zu speichern . Dann erstellen wir eine Datei und Output die schreiben Pufferinhalt.

Der Ansatz getInputStream () ist nützlich in Fällen, in denen der InputStream in einen anderen InputStream eingeschlossen werden muss , z. B. einen GZipInputStream, wenn die hochgeladene Datei komprimiert wurde.

4. MultipartFile # transferTo

Schließlich Sehen wir uns MultipartFile ‚s transferTo () Methode :

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

Mit der transferTo () -Methode müssen wir lediglich die Datei erstellen , in die die Bytes geschrieben werden sollen, und diese Datei dann an die transferTo () -Methode übergeben.

Die transferTo () -Methode ist nützlich, wenn die MultipartFile nur in eine Datei geschrieben werden muss .

5. Schlussfolgerung

In diesem Tutorial haben wir Möglichkeiten zum Konvertieren einer Spring MultipartFile in eine Datei untersucht .

Wie üblich finden Sie alle Codebeispiele auf GitHub.