Мы хотим отправить файл образа как 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>
)
}
}
Ошибка в backend - это "вложенное исключение". org.springframework.web.multipart.MultipartException: не удалось разобрать многосердечный запрос сервлета, вложенное исключение - java.io.IOException: org.apache.tomcat.util.http.fileupload. FileUploadException: запрос был отклонен, потому что не было найдено многострочной границы ".
После прочтения этого мы попытались установить границу для заголовков в выборке:
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!");
});
}
На этот раз ошибка в backend: Servlet.service() для сервлета [dispatcherServlet] в контексте с путём [] выбрано исключение [Ошибка обработки запроса; вложенное исключение - это java.lang.NullPointerException] с основной причиной.
Добавим ли мы многогранную границу справа? Где это должно быть? Возможно, сначала мы ошибаемся, потому что мы не получаем данные о multipart/form-data. Как мы можем получить его правильно?