Javascript 使用JS Fetch API上载时出现负载过大错误(413)。通过邮递员工作很好
我有一个多部分上传API,当我通过邮递员上传文件时,它可以完美地工作。然而,当我通过相同的API但使用Fetch API上传时,我得到了413错误 我尝试了给出的解决方案,但没有成功 我的JS代码如下-Javascript 使用JS Fetch API上载时出现负载过大错误(413)。通过邮递员工作很好,javascript,spring,spring-boot,Javascript,Spring,Spring Boot,我有一个多部分上传API,当我通过邮递员上传文件时,它可以完美地工作。然而,当我通过相同的API但使用Fetch API上传时,我得到了413错误 我尝试了给出的解决方案,但没有成功 我的JS代码如下- async function uploadAudio(formElements) { const formData = new FormData(); const file = fileUploadField.files[0]; formData.append(&quo
async function uploadAudio(formElements) {
const formData = new FormData();
const file = fileUploadField.files[0];
formData.append("file", file);
console.log("Name: " + file.name); // Prints the correct file name
console.log("Size: " + file.size); // Prints the correct size (which is < than what is set server side)
const options = {
method: 'POST',
body: formData,
headers: {
'Content-Type': 'multipart/form-data',
'Accept': 'application/json',
'Authorization': 'Bearer ' + authTokenArr[0]
}
};
const response = await fetch(base_url + "/audio/file", options);
const data = await response.json();
if (response.ok) {
handleSuccess(data);
} else {
handleFail(data);
}
}
休息控制器-
@PostMapping("file", produces = [ProduceTypes.JSON])
fun uploadAudio(@RequestParam("file") file: MultipartFile,
@RequestHeader (name="Authorization") token: String): ResponseEntity<MutableMap<String, Any>> {
val user: User = userService.getUserDetailsByToken(token)
val body: MutableMap<String, Any> = LinkedHashMap()
body["status"] = ApiStatus.UPLOADED
body["fileId"] = podcastFileService.uploadFileToB2(user, file)
return ResponseEntity(body, HttpStatus.CREATED)
}
当API通过Postman正常工作时,甚至当使用带有非REST控制器的
mustach
模板上载时,为什么会出现大小问题。结果是'Content-Type':'multipart/form data'
是问题所在。当我把它取下来时,它起作用了。@Kostiantyn
的评论帮助了我
@PostMapping("file", produces = [ProduceTypes.JSON])
fun uploadAudio(@RequestParam("file") file: MultipartFile,
@RequestHeader (name="Authorization") token: String): ResponseEntity<MutableMap<String, Any>> {
val user: User = userService.getUserDetailsByToken(token)
val body: MutableMap<String, Any> = LinkedHashMap()
body["status"] = ApiStatus.UPLOADED
body["fileId"] = podcastFileService.uploadFileToB2(user, file)
return ResponseEntity(body, HttpStatus.CREATED)
}
2020-09-03 18:56:02.288 DEBUG 40716 --- [nio-8080-exec-7] o.s.web.servlet.DispatcherServlet : POST "/audio/file", parameters={}
2020-09-03 18:56:02.293 DEBUG 40716 --- [nio-8080-exec-7] .m.m.a.ExceptionHandlerExceptionResolver : Using @ExceptionHandler com.krtkush.audiotime.globalexceptions.GlobalExceptionHandler#handleMultipartException(MultipartException)
2020-09-03 18:56:02.356 DEBUG 40716 --- [nio-8080-exec-7] o.s.w.s.m.m.a.HttpEntityMethodProcessor : Using 'application/json', given [application/json] and supported [application/json, application/*+json, application/json, application/*+json]
2020-09-03 18:56:02.357 DEBUG 40716 --- [nio-8080-exec-7] o.s.w.s.m.m.a.HttpEntityMethodProcessor : Writing [{timestamp=2020-09-03T18:56:02.297867, message=Maximum file size acceptable is 10MB}]
2020-09-03 18:56:02.364 DEBUG 40716 --- [nio-8080-exec-7] .m.m.a.ExceptionHandlerExceptionResolver : Resolved [org.springframework.web.multipart.MultipartException: 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]
2020-09-03 18:56:02.364 DEBUG 40716 --- [nio-8080-exec-7] o.s.web.servlet.DispatcherServlet : Completed 413 PAYLOAD_TOO_LARGE