Konvertering af en fjeder-multipartfil til en fil

1. Oversigt

I denne hurtige vejledning dækker vi forskellige måder at konvertering af en forår MultipartFile til en Fil.

2. MultipartFile # getBytes

MultipartFile har en getBytes () metode der returnerer et byte-array af filens indhold. Vi kan bruge denne metode til at skriv bytes til en fil:

MultipartFile multipartFile = ny MockMultipartFile ("sourceFile.tmp", "Hello World" .getBytes ()); Filfil = ny fil ("src / main / resources / targetFile.tmp"); prøv (OutputStream os = ny FileOutputStream (fil)) {os.write (multipartFile.getBytes ()); } assertThat (FileUtils.readFileToString (ny fil ("src / main / resources / targetFile.tmp"), "UTF-8")) .isEqualTo ("Hello World");

Det getBytes () metoden er nyttig i tilfælde hvor vi vil udføre yderligere handlinger på filen, før vi skriver til disken, som at beregne en filhash.

3. MultipartFile # getInputStream

Lad os derefter se på MultipartFile'S getInputStream () metode:

MultipartFile multipartFile = ny MockMultipartFile ("sourceFile.tmp", "Hello World" .getBytes ()); InputStream initialStream = multipartFile.getInputStream (); byte [] buffer = ny byte [initialStream.available ()]; initialStream.read (buffer); Fil targetFile = ny fil ("src / main / resources / targetFile.tmp"); prøv (OutputStream outStream = ny FileOutputStream (targetFile)) {outStream.write (buffer); } assertThat (FileUtils.readFileToString (ny fil ("src / main / resources / targetFile.tmp"), "UTF-8")) .isEqualTo ("Hello World");

Her bruger vi getInputStream () metode til at få InputStream, læs bytes fra InputStream, og opbevar dem i byte [] buffer. Så opretter vi en Fil og OutputStream at skrive buffer indhold.

Det getInputStream () tilgang er nyttig i tilfælde hvor vi har brug for at pakke InputStream i en anden InputStream, sig for eksempel a GZipInputStream hvis den uploadede fil blev gzippet.

4. MultipartFile # transferTo

Lad os endelig se på MultipartFile'S Overfør til() metode:

MultipartFile multipartFile = ny MockMultipartFile ("sourceFile.tmp", "Hello World" .getBytes ()); Filfil = ny fil ("src / main / resources / targetFile.tmp"); multipartFile.transferTo (fil); assertThat (FileUtils.readFileToString (ny fil ("src / main / resources / targetFile.tmp"), "UTF-8")) .isEqualTo ("Hello World");

Bruger Overfør til() metode, er vi simpelthen nødt til at oprette Fil som vi vil skrive byte til, og derefter sende filen til Overfør til() metode.

Det Overfør til() metode er nyttig når MultipartFile skal kun skrives til en Fil.

5. Konklusion

I denne vejledning undersøgte vi måder at konvertere en forår på MultipartFile til en Fil.

Som sædvanligt kan alle kodeeksempler findes på GitHub.


$config[zx-auto] not found$config[zx-overlay] not found