Как я могу преобразовать FilePart в байт [] в Spring 5 MVC - PullRequest
1 голос
/ 25 февраля 2020

У меня есть метод контроллера, который получает и загружает файл из веб-формы. Как я могу извлечь массив байтов из FilePart и сохранить его в БД?

Я могу сделать это, сохранив FilePart в файл с помощью FilePart.transferTo (), но это кажется медленным и безобразным. Любой лучший способ сделать это?

import org.springframework.http.codec.multipart.FilePart;
import org.springframework.web.bind.annotation.*;


 Mono<UploadResult> uploadFile(@RequestParam("files") FilePart file){

    byte[] fileAsByteArray = convertFilePartToByteArray(file);

    fileService.saveByteArrayToDB(fileAsByteArray);

    /* Rest of the method */
 }

Ответы [ 3 ]

0 голосов
/ 28 февраля 2020

Вы можете сделать что-то вроде этого:

file.content()
.map { it -> it.asInputStream().readAllBytes() }
.map { it -> fileService.saveByteArrayToDB(it) } // it is Byte array
0 голосов
/ 15 марта 2020

Другой способ сделать это - получить MultipartFile из org.springframework.web.multipart в контроллере. Ваш запрос должен быть multipart / form-data, и вы можете получить эти файлы по имени в аннотации @RequestPart.

@RequestPart("file") MultipartFile file

, чтобы получить байт [] MultipartFile просто, просто используйте file.getBytes().

0 голосов
/ 25 февраля 2020

Вы имеете в виду интерфейс org.springframework.http.code c .multipart.FilePart?

См. Как правильно прочитать Flux и преобразовать его в один inputStream

...