Disable spring boot multipart upload by controller

点点圈 提交于 2019-12-19 07:00:30

问题


I am using spring boot for uploading files. The files sizes are usually about 2GB and we cannot use the default spring boot StandardServletMultipartResolver or CommonsMultipartResolver since the server have limited resource (disk space) or memory for buffering. So we would like to get the file inputsteam and store the file directly to the cloud storage.

I know spring boot has the multipart.enabled property so I can set it to false to skip the spring MultipartResolver. But this disables multipart globally. Does any one know if there is a way to disable multipart by controller/method?


回答1:


If you enable resolve-lazily, the result is exactly what I think you're asking for.

spring.servlet.multipart.enabled = true
spring.servlet.multipart.resolve-lazily = true

Now you can write controllers with either form of signature.

Pre-parsing by the built-in multipart resolver...

@PostMapping("/upload1")
public ResponseEntity<Void> postUpload1(
    @RequestParam("metadata") MultipartFile metadata,
    @RequestParam("payload") MultipartFile payload)

Or post-parsing (which you can parse yourself)...

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



回答2:


This shows how it can be done :

springboot-large-streaming-file-upload-using-apache-commons-fileupload

Look at the answer of balajeerc



来源:https://stackoverflow.com/questions/38133381/disable-spring-boot-multipart-upload-by-controller

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!