如前所述,我试图通过fetchapi发布数据和文件。
下面是一个简化版本,我只尝试上传数据部分。数据是一个javascript对象。它的主要名称是“应用程序”和
content-type application/json
.
我已经意识到 DataForm
对象,我不应将标头中多部分formdata的内容类型声明为 Content-Type: multipart/form-data
.
const formData = new FormData();
formData.append("application", data)
try {
const response = await fetch("/api", {
method: "POST",
body: formData,
});
handleFetchErrors(response);
return await response.json();
} catch (e) {
console.error(e);
}
问题:我得到的错误是 415 Unsupported Media Type
更具体一些 Resolved [org.springframework.web.HttpMediaTypeNotSupportedException: Content type 'application/octet-stream' not supported]
这对我来说没有任何意义,因为在浏览器中发出请求后,我可以在devtools->network中的content type-> multipart/form-data; boundary=...(some value)
在后端(java spring boot),实现以下功能:
@RequestMapping(value = "/api", method = RequestMethod.POST, consumes = {"multipart/form-data"}, produces = {"application/json"})
public @ResponseBody Application createApplication(
@RequestPart("application") @Valid @NonNull Application application,
@RequestPart("file") @Valid @Nullable MultipartFile[] files
) {
return applicationService.createApplication(application);
}
我已经在《 Postman 》上测试过了,它似乎很管用,但在前端就不行了。
更新:我认为 formData.appen(key,value)
不能是对象。到目前为止,我只找到字符串或文件作为值选项。
暂无答案!
目前还没有任何答案,快来回答吧!