当前位置: 首页 > 知识库问答 >
问题:

使用JS Fetch API上传时,净荷过大错误(413)。通过邮递员工作正常

经福
2023-03-14

我有一个多部分上传API,当我通过邮递员上传文件时,它可以完美地工作。然而,当我通过相同的API但使用Fetch API上传时,我得到了413错误。

我尝试了这里给出的解决方案,但没有成功。

我的JS代码如下-

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);
    }
} 

应用程序。属性文件-

# max file size
spring.servlet.multipart.max-file-size=10MB
# max request size
spring.servlet.multipart.max-request-size=10MB 

Rest控制器-

@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

当API通过Postman正常工作时,甚至当使用带有非REST控制器的mustache模板上传时,为什么会出现大小问题。

共有1个答案

富波光
2023-03-14

原来问题出在“内容类型”:“多部分/表单数据”。当我把它取下来时,它起作用了。@Kostiantyn的评论帮助了我。

 类似资料:
  • 我试图上传一个图像从本地使用bas64做图像检测。 和一切正常工作在localhost和邮递员。 但部署后,我得到了CROS错误。 我已经在 cors中间件在使用url获取图像时工作正常, 但是当我试图使用bas64从本地上传图像时,控制台显示: 这是我尝试过的解决方案: cors-任何地方 然后显示。 由于在localhost和postman中测试时没有错误,我发现一些文章说这可能仍然是cors

  • Spring启动应用程序。我有一个用于上传多部分文件的Restendpoint。 Spring boot版本为2.0.6。我尝试了以下方法。 1) spring:tomcat:最大http表单post大小:500MB最大swallow大小:500MB 2) spring:servlet:多部分:最大文件大小:500MB最大请求大小:500MB已启用:true 3) spring:servlet:多

  • 我试图上传一个文件到我的服务器使用一个endpoint通过Spring公开。然而,当我试图通过邮递员测试api时,我得到当前请求不是一个多部分请求错误。我通过这个问题多部分异常:当前请求不是多部分请求,但仍然无法修复此问题。请帮助。提前感谢。 这是我的控制器: 我的服务: 正如您在下面看到的,我将文件作为表单数据发送,并且没有设置任何标题

  • 我制作了一个notes应用程序,我可以提交notes,并通过post请求将数据发送到我的mysql数据库。只要我的帖子不超过64kb,一切都很好。 我希望我的帖子能够超过64kb。每次我把一篇文章写得太大,我就会得到一个“413有效载荷太大”的错误。我正在使用axios、express、nginx等。我的notes应用程序代码可以在https://github.com/ericx2x/notes

  • 我有一个包含大量参数的GET请求,每当我通过浏览器点击它时,它都可以正常工作,但是每当我尝试通过Postman点击相同的请求时,我都会得到-"414错误-Request URI Too大|nginx"。这是一些奇怪的事情,因为我通过浏览器获取结果。请帮助。

  • 我的主要目标是使用Microsoft Graph API将。pptx/.docx/.pdf文件上传到Microsoft Sharepoint。我可以使用下面的“PUT”请求上传到简单的文本文件,其中的内容类型是多部分/表单数据 ---------------------------------404518839734975569926100内容-处理:表单-数据;name=“文件”;filenam