Spring上传文件大小限制

Posted

技术标签:

【中文标题】Spring上传文件大小限制【英文标题】:Spring upload file size limit 【发布时间】:2017-03-09 08:42:56 【问题描述】:

我正在为我的应用程序使用 Spring Boot,我想将一些文件上传到我的数据库中。 我使用了一个教程来实现这一点,并且效果很好。我的问题是我不知道如何设置要上传的最大文件大小。默认值为 1MB,但这对我来说还不够。

我将这些行添加到我的application.properties:

spring.http.multipart.max-file-size = 100MB
spring.http.multipart.max-request-size = 100MB

但它没有帮助。

我的代码:

FileService.java

@Service
public class FileService 
@Autowired
FileRepository fileRepository;
public Response uploadFile(MultipartHttpServletRequest request) throws  IOException 
    
    Response response = new Response();
    List fileList = new ArrayList();
    
    Iterator<String> itr = request.getFileNames();
    
    while (itr.hasNext()) 
        String uploadedFile = itr.next();
        MultipartFile file = request.getFile(uploadedFile);
        String mimeType = file.getContentType();
        String filename = file.getOriginalFilename();
        byte[] bytes = file.getBytes();

        File newFile = new File(filename, bytes, mimeType);
        File savedFile = fileRepository.saveAndFlush(newFile);
        savedFile.setFile(null);
        fileList.add(savedFile);
    
    
    response.setReport(fileList);
    return response;


FileController.java

@RestController
@RequestMapping("/file")
public class FileController 
            
    @Autowired
    FileService fileService;
@RequestMapping(value = "/upload", method = RequestMethod.POST)
    public Response uploadFile(MultipartHttpServletRequest request) throws IOException
        return fileService.uploadFile(request);
     

这段代码很好,运行良好,我只是无法设置最大文件大小。

【问题讨论】:

属性看起来不错,当您尝试使用更大的文件时是否遇到任何错误? MultipartException 无法解析多部分 servlet 请求;嵌套异常是 java.lang.IllegalStateException: org.apache.tomcat.util.http.fileupload.FileUploadBase$FileSizeLimitExceededException: 字段 uploadfile 超过其最大允许大小 1048576 字节。 您使用的是哪个 Spring Boot 版本。 我用的是 1.3。属性的名称已更改,它们是 multipart.maxFileSize 和 multipart.maxRequestSize。在我切换到 Spring Boot 1.4 之后,上面的属性运行良好。 弹簧属性列表:docs.spring.io/spring-boot/docs/current/reference/html/… 【参考方案1】:

对于早于 4.0 的 Spring,正确的属性是

multipart.maxFileSize

multipart.maxRequestSize

从 Spring 4 开始,这些更改为

spring.http.multipart.max-file-size

spring.http.multipart.max-request-size

【讨论】:

【参考方案2】:

对我来说工作(在 Spring Boot 2.0.0 中):

spring.servlet.multipart.max-file-size=-1

【讨论】:

负值表示完全禁用此限制。您可以这样做,但在这种情况下,您必须控制前面的传入流量。负值是 DDoS 的敞开大门。【参考方案3】:

这个配置对我有用:

spring.servlet.multipart.max-file-size=10MB
spring.servlet.multipart.max-request-size=10MB

参考文档:Tuning File Upload Limits

【讨论】:

以上是关于Spring上传文件大小限制的主要内容,如果未能解决你的问题,请参考以下文章

Spring上传文件大小限制

如何使用嵌入式 tomcat 在 Spring Boot 中增加文件大小上传限制

Spring Mvc 怎么上传超过全局配置的文件?

Spring Boot配置文件上传大小限制

springboot上传文件大小限制的配置

spring boot 2.X上传文件限制大小