我想知道如何配置我的spring-boot服务器,以便能够根据我要上传的文件类型为文件分配不同的最大大小值。
例如,10MB到.pdf文件,100MB到.mp4文件,500MB到.zip文件等...
目前我在application.properties中得到了这个:
spring.servlet.multipart.max-file-size=100MB
但它只为每个可能的文件分配100MB。
知道如何实现它吗?
感谢帮助!
您可以使用自己的多部件处理程序,以便以编程方式设置最大上载大小。例如,在控制器中使用ServletFileUpload
:
DiskFileItemFactory factory = new DiskFileItemFactory(thresholdBytes, tempDir);
ServletFileUpload upload = new ServletFileUpload(factory);
upload.setFileSizeMax(maxFileSize);
for (FileItem item : upload.parseRequest(request)) {
// Save the file
File uploadedFile = new File(myPath);
item.write(uploadedFile);
}
为了更好地控制流处理,您可以使用item.getInputStream()
并使用您自己的流逻辑传输字节。
要使用它,您需要使用spring.servlet.multipart.enabled = false
或spring.servlet.multipart.resolve-lazily = true
禁用Spring默认的多部分处理。
第二个选项是注册多个servlet,每个servlet处理不同的文件类型,并为每个servlet定义不同的@MultipartConfig
(指定maxFileSize
和maxRequestSize
)。然后从主servlet执行内部重定向到特定于文件类型的servlet。