我正在尝试通过我的 React 前端向 Spring 后端发送 API 请求。当我发送请求时,我收到此错误:
Could not resolve parameter [0] in private org.springframework.http.ResponseEntity com.example.bottlecap.controllers.BottlecapController.entryForm(com.example.bottlecap.domian.Bottlecap,org.springframework.web.multipart.MultipartFile): Content type 'application/octet-stream' not supported
Run Code Online (Sandbox Code Playgroud)
但是,当我使用 Postman 设置请求时,它运行良好。我认为我在 React 端设置 FormData 的方式可能存在问题。但是,我几乎没有运气弄清楚。
我的 API 应该接收一个对象,该对象包含有关我提交的数据以及与提交相关的图像。在我的 Postman 请求中,我创建了一个表单数据,其中包含一个 JSON 文件,该文件包含所有对象数据和一个仅用于测试的随机图像。正如我所说,requets 通过这个很好。但是,在前端代码中,我将对象数据解析为 Json 并将其添加到 FormData 以及将图像添加到 FormData。
这是我的弹簧控制器:
@RequestMapping(path ="/bottlecap/entry", method = RequestMethod.POST, consumes = {MediaType.MULTIPART_FORM_DATA_VALUE, MediaType.APPLICATION_OCTET_STREAM_VALUE})
private ResponseEntity entryForm(@RequestPart("cap") Bottlecap cap, @RequestPart("file") MultipartFile image){
System.out.println(cap);
cap.toString();
System.out.println("Test");
return ResponseEntity.ok().build();
}
Run Code Online (Sandbox Code Playgroud)
这是我的反应前端表单提交处理程序:
handleSubmit = event =>{
console.log(this.state.page);
console.log(this.state.page);
event.preventDefault();
const cap ={
"name":this.state.name,
"brand":this.state.brand,
"yearMade":parseInt(this.state.yearMade),
"country": …Run Code Online (Sandbox Code Playgroud)