禁用控制器的春季启动分段上传

Dav*_*hen 6 spring file-upload file multipart spring-boot

我使用spring boot来上传文件.文件大小通常约为2GB,我们不能使用默认的spring引导,StandardServletMultipartResolver或者CommonsMultipartResolver因为服务器具有有限的资源(磁盘空间)或内存用于缓冲.因此,我们希望获得文件输入,并将文件直接存储到云存储中.

我知道spring boot有multipart.enabled属性所以我可以将它设置为false以跳过弹簧MultipartResolver.但这会全局禁用multipart.有没有人知道是否有办法通过控制器/方法禁用multipart?

nob*_*bar 5

如果您启用resolve-lazily,结果正是我认为您所要求的。

spring.servlet.multipart.enabled = true
spring.servlet.multipart.resolve-lazily = true
Run Code Online (Sandbox Code Playgroud)

现在您可以使用任一形式的签名编写控制器。

由内置的多部分解析器预解析...

@PostMapping("/upload1")
public ResponseEntity<Void> postUpload1(
    @RequestParam("metadata") MultipartFile metadata,
    @RequestParam("payload") MultipartFile payload)
Run Code Online (Sandbox Code Playgroud)

或后解析(您可以自己解析)...

@PostMapping(path = "/upload2", consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
public ResponseEntity<Void> postUpload2(HttpServletRequest rawRequest)
Run Code Online (Sandbox Code Playgroud)


Ste*_*com -1

这显示了如何做到这一点:

springboot-large-streaming-文件上传-使用-apache-commons-fileupload

看看balajeerc的回答

  • 家长评论提到他们知道这种方法,但正在寻找不会全局禁用多部分的方法。 (3认同)