栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

踩坑:fetch上传formData文件。 无需额外增加headers、浏览器会自动根据文件加上headers 生成boundary

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

踩坑:fetch上传formData文件。 无需额外增加headers、浏览器会自动根据文件加上headers 生成boundary

一、场景

想要实现的效果:获取到图片本地内容后,通过 fetch 来上传 formData 格式数据。

二、遇到的问题

有问题的请求:

function request(params){
  const { api, data } = params;
  const url = window.location.origin + api;
  return fetch(url,{
	method:"POST",
	headers:{
      'Content-Type': 'multipart/form-data',
	},
	body: data
  }).then((response) => response.json())
}

结果服务器报错:message: "Failed to parse multipart servlet request; nested exception is java.io.IOException: org.apache.tomcat.util.http.fileupload.FileUploadException: the request was rejected because no multipart boundary was found
这不是接口想要的类型

三、针对fetch 的解决方法

试过更改 Content-Type 的值,【multipart/form-data;】【application/x-www-form-urlencoded】
结果可能是这样


四、总结 使用form-data提交的时候,不要手动设置content-type

最终还是解决不了, 最后直接删掉了headers,让客户端浏览器自动识别生成headers ,便成功了。
解决办法:删掉 headers 让浏览器自动识别添加

fetch(url,{ method:"POST", body: formdata})
	.then((response) => response.json())

如下

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/590809.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号