Отправка файла с использованием multipart / form-data и SpringBoot на бэкэнд - PullRequest
0 голосов
/ 23 февраля 2020

Я пытаюсь отправить файл с vue. js с помощью топора ios и получить его в бэкэнде на основе пружин. Вот моя внешняя часть:

uploadMap(context, map){

      console.log('uploading map...')
      const formData = new FormData();

      formData.append("file", map);

      axios.post("/info/map/upload", formData)
          .then(function (result) {
            console.log(result);
          }, function (error) {
            console.log(error);
          });
    },

и на бэкенде:

@PostMapping(consumes = MediaType.MULTIPART_FORM_DATA_VALUE, value = "/info/uploadFile")
    public void uploadFile(@RequestParam("file") MultipartFile file) throws IOException {

        System.out.println("file uploaded");

        String basePath = "/Users/admin/software/app1/uploads/";

        String filePath = basePath + file.getOriginalFilename();
        File dest = new File(filePath);
        file.transferTo(dest);
    }

Внутренняя часть работает при использовании Insomnia / Postman для тестирования. Но когда я хочу вызвать свой код внешнего интерфейса, я получаю обратно:

2020-02-23 17:38:52.038  WARN 61799 --- [nio-5000-exec-5] .w.s.m.s.DefaultHandlerExceptionResolver : Resolved [org.springframework.web.HttpMediaTypeNotSupportedException: Content type 'multipart/form-data;boundary=----WebKitFormBoundary2cAmVUpGnPfkQax3' not supported]

Как мне с этим справиться? Спасибо заранее ?

1 Ответ

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

Добавьте зависимость к вашей конфигурации Maven:

<dependency>
    <groupId>commons-fileupload</groupId>
    <artifactId>commons-fileupload</artifactId>
    <version>1.3.1</version>
</dependency>

Затем зарегистрируйте новый бин со специальным именем:

@Bean(name = "multipartResolver")
public CommonsMultipartResolver multipartResolver() {
    CommonsMultipartResolver multipartResolver = new CommonsMultipartResolver();
    return multipartResolver;
}
...