将formdata上载到远程Tomcat服务器时,Multipart为null

时间:2017-08-07 07:30:35

标签: java tomcat web spring-boot spring-restcontroller

我遇到多部分文件的问题。我从前端上传文件(react)并将其传递给我的后端:

export function uploadExcelFile(files) {
  const dataToTransfer = new FormData();
  dataToTransfer.append('uploadedFile', files[0]);

  return (dispatch) => {
    const OPTIONS_POST_EXCEL = {
      ...OPTIONS_POST,
      headers: {
      },
      body: dataToTransfer,
    };

    return fetch('/api/excelstuff/upload', OPTIONS_POST_EXCEL)
      .then((res) => {
        // do stuff to dispatch
      })
      .catch((err) => {
        throw err;
      });
  };
}

后端是使用Spring Boot实现的,当它收到formdata时,代码如下所示:

@RequestMapping(value="/upload", method = RequestMethod.POST, consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
public ResponseEntity<List<MyList>> uploadExcelFile(@RequestBody MultipartFile uploadedFile) {
            log.warn("Is multipartfile empty? {}", uploadedFile);
            return excelImporterService.uploadExcelFile(uploadedFile);
        }
    }

当我将项目推送到CloudFoundry时,RequestBody为空。但是在本地运行该项目它是有效的!我正在基于TomCat Server运行应用程序。

我已尝试在我的gradle构建中包含compile(&#39; commons-fileupload:commons-fileupload:1.3.3&#39;)。并包括以下内容:

@Bean
public MultipartResolver multipartResolver() {
    CommonsMultipartResolver commonsMultipartResolver = new CommonsMultipartResolver();
    commonsMultipartResolver.setMaxUploadSize(-1);

    return commonsMultipartResolver;
}

我已将其包含在我的配置(yml文件)

spring:
 application:
  name: somename
 http:
  multipart:
   enabled: false

我希望这是一个常见的问题,有人已经解决了,请帮忙!

1 个答案:

答案 0 :(得分:0)

尝试将multipart / form-data作为内容类型添加到您的请求中。

祝你好运!