post文件和数据与fetch解析为415不支持的媒体类型

1tuwyuhd  于 2021-07-26  发布在  Java
关注(0)|答案(0)|浏览(569)

如前所述,我试图通过fetchapi发布数据和文件。
下面是一个简化版本,我只尝试上传数据部分。数据是一个javascript对象。它的主要名称是“应用程序”和
content-type application/json .
我已经意识到 DataForm 对象,我不应将标头中多部分formdata的内容类型声明为 Content-Type: multipart/form-data .

  1. const formData = new FormData();
  2. formData.append("application", data)
  3. try {
  4. const response = await fetch("/api", {
  5. method: "POST",
  6. body: formData,
  7. });
  8. handleFetchErrors(response);
  9. return await response.json();
  10. } catch (e) {
  11. console.error(e);
  12. }

问题:我得到的错误是 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),实现以下功能:

  1. @RequestMapping(value = "/api", method = RequestMethod.POST, consumes = {"multipart/form-data"}, produces = {"application/json"})
  2. public @ResponseBody Application createApplication(
  3. @RequestPart("application") @Valid @NonNull Application application,
  4. @RequestPart("file") @Valid @Nullable MultipartFile[] files
  5. ) {
  6. return applicationService.createApplication(application);
  7. }

我已经在《 Postman 》上测试过了,它似乎很管用,但在前端就不行了。
更新:我认为 formData.appen(key,value) 不能是对象。到目前为止,我只找到字符串或文件作为值选项。

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题