Неподдерживаемый тип мультимедиа из файла API нескольких частей - PullRequest
0 голосов
/ 10 июня 2018

Всегда выдает 415 неподдерживаемый тип носителя по ошибке от POSTMAN.Заголовок содержит данные multipart / form с границей, как в вызове CURL ниже.Также попытался заменить RequestPart с RequestBody безуспешно.

Нужно ли вызывать apis для загрузки файла из нескольких частей другим способом при использовании FilePart вместо этого?

RESTContoller:

 @PostMapping(value = "/upload", consumes = MediaType.MULTIPART_FORM_DATA_VALUE, produces = MediaType.APPLICATION_JSON_VALUE)
public void uploads(@RequestPart("filePart") Flux<Part> fileparts) {

     ....

}

Curl:

curl -X POST \
  http://localhost:8080/upload \
  -H 'accept: application/json' \
  -H 'cache-control: no-cache' \
  -H 'content-type: multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW' \
  -H 'postman-token: 2e850843-13d0-32d3-8734-227242da3303' \
  -F filePart=@abc.txt

Вывод:

"status": 415,
"error": "Unsupported Media Type",
"message": "Content type 'text/plain' not supported",

РЕДАКТИРОВАТЬ

Изменение аргумента загрузки с @RequestPart("filePart") Flux<Part> fileparts на @RequestParam("file") MultipartFile file, однако работает.

Разве мы не можем использовать тот же вызов curl с RequestPart?

1 Ответ

0 голосов
/ 27 июня 2018

Проблема возникла из-за того, что в pom.xml в качестве зависимости были добавлены spring-webmvc и spring-webflux.Кажется, spring-webmvc и spring-webflux нельзя включить вместе.

 <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
        <version>${spring.boot.version}</version>
        <exclusions>
            <exclusion>
                <groupId>org.springframework</groupId>
                <artifactId>spring-webmvc</artifactId>
            </exclusion>
        </exclusions>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-webflux</artifactId>
        <version>${spring.boot.version}</version>
    </dependency>
...