我试图用一个多部分post请求将一个文件和两个json对象发送到我的spring引导后端,但是我总是得到一个415http响应。下面是我已经试过做的事情的列表:
将每个对象作为 Blob
使用 application/json
此处建议的内容类型
将每个对象作为 String
正如这里所建议的
添加 contentType: false
以及 processData: false
在这里建议的ajax请求中
使用 @RequestParam
而不是 @RequestPart
Spring引导控制器
我错过了什么?
请求如下:
const data = new FormData();
data.append('file', new Blob([file], {type: 'multipart/form-data'}));
data.append('entity1-info', new Blob([JSON.stringify(entity1Object)], {type: 'application/json'}));
data.append('entity2-info', new Blob([JSON.stringify(entity2Object)], {type: 'application/json'}));
return axios({
method: 'post',
url: url,
headers: {'Authorization': `Bearer ${idToken}`},
data: data,
contentType: false,
processData: false
});
这是我的spring boot控制器:
@PostMapping("/upload")
public ResponseEntity<String> uploadFile(@NotEmpty @RequestPart("file") MultipartFile multipartFile, @NotNull @RequestPart("entity1-info") Entity1 entity1, @NotNull @RequestPart("entity2-info") Entity2 entity2, HttpServletRequest request) {
log.debug(request);
...
return ResponseEntity.ok("ok");
}
2条答案
按热度按时间qcuzuvrc1#
我终于找到了为什么我总是
415 http response
从我的 Spring 启动后端。问题是请求的url错误。它指向一个只需要json数据而不需要多部分的端点。这就是春靴回归的原因
Unsupported media type
.希望这能帮助别人。
9avjhtql2#
您必须将“内容类型”设置为标题
我正在使用类似于下面的curl命令,它运行良好。
注意:上面的person1和person2是json文件。