Spring上传文件大小限制

15

我正在使用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;
}
}

文件控制器.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);
     }
}

这段代码很好,它完美地运作,只是我无法设置最大文件大小。


属性看起来没问题,你尝试使用更大的文件时有出现任何错误吗? - Sundararaj Govindasamy
MultipartException无法解析多部分servlet请求;嵌套异常是java.lang.IllegalStateException:org.apache.tomcat.util.http.fileupload.FileUploadBase$FileSizeLimitExceededException:字段uploadfile超过了其允许的最大大小1048576字节。 - Siriann
你使用的是哪个Spring Boot版本? - M. Deinum
我使用的是1.3版本。属性名称已更改,它们是multipart.maxFileSize和multipart.maxRequestSize。在切换到Spring Boot 1.4后,上述属性正常工作。 - Siriann
Spring属性列表: https://docs.spring.io/spring-boot/docs/current/reference/html/application-properties.html#application-properties.web.spring.servlet.multipart.enabled - Jordan Stewart
3个回答

20
在 Spring 4.0 之前,正确的属性为: multipart.maxFileSize multipart.maxRequestSize 从 Spring 4 开始,这些属性被更改为: spring.http.multipart.max-file-size spring.http.multipart.max-request-size

15

这个配置对我起作用:

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

文档参考:调整文件上传限制


13

对我而言(在Spring Boot 2.0.0中)有效的做法是:

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

2
负值意味着此限制完全被禁用。您可以这样做,但在这种情况下,您必须控制前端的流量。负值是 DDoS 的开放大门。 - Mike Menko

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接