gpt4 book ai didi

reactjs - React.js,如何将多部分/表单数据发送到服务器

转载 作者:行者123 更新时间:2023-12-03 13:11:58 25 4
gpt4 key购买 nike

我们想要将图像文件作为 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 (
<form encType="multipart/form-data" action="">
<input type="file" name="fileName" defaultValue="fileName"></input>
<input type="button" value="upload" onClick={this.uploadAction.bind(this)}></input>
</form>
)
}
}

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

阅读后this ,我们尝试在 fetch 中设置 headers 的边界:

fetch("http://localhost:8910/taskCreationController/createStoryTask", {
mode: 'no-cors',
method: "POST",
headers: {
"Content-Type": "multipart/form-data; boundary=AaB03x" +
"--AaB03x" +
"Content-Disposition: file" +
"Content-Type: png" +
"Content-Transfer-Encoding: binary" +
"...data... " +
"--AaB03x--",
"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!");
});
}

这一次,后端的错误是:Servlet.service() for servlet [dispatcherServlet] in context with path [] throwed exception [请求处理失败;嵌套异常是 java.lang.NullPointerException] 其根本原因

我们添加多部分边界对吗?应该在哪里?也许我们一开始就错了,因为我们没有得到多部分/表单数据。我们怎样才能正确获取它?

最佳答案

我们只是尝试删除 header ,它就起作用了!

fetch("http://localhost:8910/taskCreationController/createStoryTask", {
mode: 'no-cors',
method: "POST",
body: data
}).then(function (res) {
if (res.ok) {
alert("Perfect! ");
} else if (res.status == 401) {
alert("Oops! ");
}
}, function (e) {
alert("Error submitting form!");
});

关于reactjs - React.js,如何将多部分/表单数据发送到服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41610811/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com