Как читать multipart, используя Sring Boot? - PullRequest
1 голос
/ 28 апреля 2019

В моем контроллере есть следующее:

@PostMapping(value = "{storageId}/{repositoryId}", consumes = "multipart/form-data")
public ResponseEntity uploadViaPost(@PathVariable(name = "storageId") String storageId,
                                    @PathVariable(name = "repositoryId") String repositoryId,
                                    @RequestPart("content")
                                    MultipartFile multipartFile,
                                    HttpServletRequest request)
            throws IOException
{
...
}

Какие классы / аннотации мне нужно использовать, если я хочу получить остальные поля, состоящие из нескольких частей (которые не являются файлами)?Может ли кто-нибудь предоставить пример того, как обрабатывать остальные поля, такие как:

----------------GHSKFJDLGDS7543FJKLFHRE75642756743254
Content-Disposition: form-data; name="platform"

UNKNOWN
----------------GHSKFJDLGDS7543FJKLFHRE75642756743254
Content-Disposition: form-data; name="version"

1.0
----------------GHSKFJDLGDS7543FJKLFHRE75642756743254
Content-Disposition: form-data; name="description"

UNKNOWN

1 Ответ

1 голос
/ 28 апреля 2019

Вы можете использовать несколько @RequestPart аннотаций в подписи вашего метода и пометить необходимые данные с флагом required=false.

Например:

@PostMapping(path = "/test", consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
public ResponseEntity testEndpoint(@RequestPart("file") MultipartFile file,
                                   @RequestPart("version") String version,
                                   @RequestPart(name = "platform", required = false) String platform) {
    log.info("file_name = {}, version = {}, platform = {}", file.getOriginalFilename(), version, platform);
    return ResponseEntity.ok().build();    
}

и curl для тестирования:

curl -X POST \
  http://localhost:8080/test \
  -H 'Content-Type: multipart/form-data' \
  -F file=@/path/to/file/test.txt \
  -F version=1.0.0 \
  -F platform=Test-Platform
...