我遇到多部分文件的问题。我从前端上传文件(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
我希望这是一个常见的问题,有人已经解决了,请帮忙!
答案 0 :(得分:0)
尝试将multipart / form-data作为内容类型添加到您的请求中。
祝你好运!