有什么方法可以通过文件类型指定最大文件大小?

时间:2019-04-05 23:40:32

标签: java spring spring-mvc

我想知道如何配置 spring-boot服务器以便能够根据类型为文件设置不同的最大大小值我要上传的文件

例如,从10MB到.pdf文件,100MB到.mp4文件,500MB到.zip文件,等等...

此刻,我在我的 application.properties 中得到了这个

spring.servlet.multipart.max-file-size=100MB

但是它只是为每个可能的文件分配了100MB。

有什么想法可以实现它吗?


感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

您可以使用自己的分段处理程序,以编程方式设置最大上传大小。例如,在您的控制器中使用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 = falsespring.servlet.multipart.resolve-lazily = true禁用Spring的默认mulitpart处理。

第二个选项是注册多个servlet,每个servlet处理不同的文件类型,并为每个servlet定义不同的@MultipartConfig(指定了maxFileSizemaxRequestSize)。然后从主servlet进行内部重定向到文件类型特定的servlet。