我想从React获取文件上传并将其发送到springboot。 我正在尝试从React FormData发布,它将包含文件名和将为XML的文件的键值对。因此,当我尝试将FormData发布到我的后端Springboot时,它将返回:
.w.s.m.s.DefaultHandlerExceptionResolver : Resolved
[org.springframework.web.HttpMediaTypeNotSupportedException:
Content type 'application/json;charset=UTF-8' not supported]
这是我的React代码:
handleSubmit = (e) => {
e.preventDefault();
console.log(this.state.file[0].name);
const formData = new FormData();
var i = this.state.file.length;
console.log(i);
for (var j = 0; j < i; j++) {
formData.append(this.state.file[j].name, this.state.file[j])
}
for (var pair of formData.entries()) {
console.log(pair[0] + ',' + pair[1]);
}
Axios.post('http://localhost:8080/upload', {
file:formData
})
.then(response=>{
console.log(response)
})
;
这是我的Springboot控制器:
@CrossOrigin
@RequestMapping(value = "/upload", consumes = "multipart/form-data", method = RequestMethod.POST)
public String upload(@RequestParam("file") MultipartFile[] file) throws IOException {
System.out.println(file.length);
for(MultipartFile temp : file) {
System.out.println(temp.getOriginalFilename());
System.out.println(temp.getSize());
File converted = new File(temp.getOriginalFilename());
temp.transferTo(converted);
System.out.println(converted.getTotalSpace());
}
return "blah";
}
我已经尝试过在Axios发布请求的标头中指定multipart / form-data,但是它似乎没有用。 是我的请求中的问题还是我的控制器? 请让我知道是否有任何想法,我已经将头撞在墙上几个小时,试图解决这个问题。
答案 0 :(得分:0)
在发送请求时尝试headers: {'Content-Type': undefined},
。还要确保您在表单上有enctype="multipart/form-data"
。
答案 1 :(得分:0)
-您可以尝试将控制器更改为以下内容,而不是@RequestParam。
@RequestPart("file") MultipartFile file