tomcat 在Sping Boot Web API中上传较大文件(MultipartFile)时出现CORS错误

x4shl7ld  于 2023-08-06  发布在  其他
关注(0)|答案(1)|浏览(131)

我有下面的API来保存MultipartFile。如果文件大小低于定义的限制,我可以保存文件。

@PostMapping("/attachments")
    @Operation(summary = "save attachments")
    public ResponseEntity<List<Attachment>> saveAttachments(@RequestParam ("files") MultipartFile[] files,@RequestParam ("id") Long id) {
        return ResponseEntity.ok(myservice.saveAttachment(id, files));
    }

字符串
下面是我的属性文件:

spring.servlet.multipart.enabled=true
spring.servlet.multipart.file-size-threshold=2KB
spring.servlet.multipart.max-file-size=10MB
spring.servlet.multipart.max-request-size=200MB


现在,如果我上传任何低于10MB它工作正常,没有任何错误。但是,当我尝试上传任何超过10MB的文件时,我会收到一个CORS策略错误(我已经定义了CORS策略)。

Access to XMLHttpRequest at 'http://localhost:8002/api/attachments' from origin 'http://localhost:4200' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.


我正在处理文件大小异常,并在后台获得以下异常处理消息:

Resolved [org.springframework.web.multipart.MaxUploadSizeExceededException: Maximum upload size exceeded]

shstlldc

shstlldc1#

这可能是由于飞行前的要求
CORS预检请求是Web浏览器在发送实际请求之前发送给服务器的HTTP OPTIONS请求。预检请求的目的是确定服务器是否允许发出实际请求。
所以你的浏览器发送一个preflight请求“containing content length header”来询问服务器是否允许这个请求,服务器检查大小是否大于它允许的大小,所以它说不,我不允许这个请求。
您的解决方法是编辑application.properties以支持您想要的任何大小
这里我将max-size设置为每个请求1GB

spring.servlet.multipart.max-file-size=1000MB
spring.servlet.multipart.max-request-size=1000MB

字符串

相关问题