1. 概要

このクイックチュートリアルでは、SpringMultipartFileをファイルに変換するさまざまな方法について説明します。

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、からバイトを読み取り、byte[に格納します。 ]バッファ。 次に、FileOutputStreamを作成して、bufferの内容を書き込みます。

getInputStream()アプローチは、InputStreamを別の InputStreamでラップする必要があるインスタンスで役立ちます。たとえば、GZipInputStreamの場合アップロードされたファイルはgzipで圧縮されました。

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()メソッドを使用して、バイトを書き込む File を作成し、そのファイルを transferTo()に渡すだけです。方法。

transferTo()メソッドは、MultipartFileをファイルに書き込むだけでよい場合に便利です。

5. 結論

このチュートリアルでは、Spring MultipartFileFileに変換する方法について説明しました。

いつものように、すべてのコード例はGitHubにあります。