有没有办法按文件类型指定MAX文件大小?

问题描述 投票:0回答:1

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

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

目前我在application.properties中得到了这个:

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

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

知道如何实现它吗?


感谢帮助!

java spring spring-mvc
1个回答
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默认的多部分处理。

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

© www.soinside.com 2019 - 2024. All rights reserved.