react上传本地文件到服务器,reactjs – React.js,如何将multipart/form-data发送到服务器...

在尝试从React应用中通过fetch API发送multipart/form-data的图片文件到后端时遇到问题。后端返回了MultipartException和IOException,提示找不到多部分边界。在尝试手动设置Content-Type头并指定边界后,后端错误变为NullPointerException。问题可能在于请求格式的不正确设置或后端处理的错误。解决方案可能包括正确设置formData和Content-Type,以及检查后端的多部分解析配置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

我们想将一个图像文件作为multipart / form发送到后端,我们尝试使用html表单获取文件并将文件作为formData发送,这里是代码

export default class Task extends React.Component {

uploadAction() {

var data = new FormData();

var imagedata = document.querySelector('input[type="file"]').files[0];

data.append("data",imagedata);

fetch("http://localhost:8910/taskCreationController/createStoryTask",{

mode: 'no-cors',method: "POST",headers: {

"Content-Type": "multipart/form-data"

"Accept": "application/json","type": "formData"

},body: data

}).then(function (res) {

if (res.ok) {

alert("Perfect! ");

} else if (res.status == 401) {

alert("Oops! ");

}

},function (e) {

alert("Error submitting form!");

});

}

render() {

return (

)

}

}

后端的错误是“嵌套异常是org.springframework.web.multipart.MultipartException:无法解析多部分servlet请求;嵌套异常是java.io.IOException:org.apache.tomcat.util.http.fileupload.FileUploadException:请求被拒绝,因为没有找到多部分边界“.

阅读this之后,我们尝试在fetch中设置边框到标题:

fetch("http://localhost:8910/taskCreationController/createStoryTask",headers: {

"Content-Type": "multipart/form-data; boundary=AaB03x" +

"--AaB03x" +

"Content-Disposition: file" +

"Content-Type: png" +

"Content-Transfer-Encoding: binary" +

"...data... " +

"--AaB03x--","Accept": "application/json",function (e) {

alert("Error submitting form!");

});

}

这次,后端的错误是:servlet [dispatcherServlet]的Servlet.service()在上下文中,路径[]引发异常[请求处理失败;具有根本原因的嵌套异常是java.lang.NullPointerException]

我们添加多部分边界吗?应该在哪里?

也许我们一开始就错了,因为我们没有得到multipart / form-data.我们怎样才能正确理解?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值