我們要發送圖像文件作爲多/表單到後臺,我們嘗試使用HTML表單獲取文件和發送文件作爲FORMDATA,在這裏是碼React.js,如何在多/表單數據發送到服務器
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("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()進行的servlet [DispatcherServlet的]與路徑上下文[]拋出異常[請求處理失敗;嵌套的異常是根本原因的java.lang.NullPointerException]
我們是否添加多部分邊界?它應該在哪裏? 也許我們都錯了,首先是因爲我們沒有得到的multipart/form-data的。我們怎樣才能正確地得到它?
您怎樣處理在後端這些數據?假設PHP @PeterJiang –
我們沒有使用PHP,但Java –