我有一个带有 MultipartConfig
注释的控制器(下面显示了其中的一个片段):
@RestController
@RequestMapping("packages")
@MultipartConfig(maxFileSize = 1024*1024*1024, maxRequestSize = 1024*1024*1024)
public class PackagesController
{
@RequestMapping(method = RequestMethod.POST)
public String create(@RequestParam("package") MultipartFile uploadedPackage)
{
// do stuff to the file
return "create";
}
}
但是,当我将文件上传到此端点时,它似乎正在使用默认的多部分配置值:
Caused by: org.apache.tomcat.util.http.fileupload.FileUploadBase$FileSizeLimitExceededException: The field package exceeds its maximum permitted size of 1048576 bytes.
at org.apache.tomcat.util.http.fileupload.FileUploadBase$FileItemIteratorImpl$FileItemStreamImpl$1.raiseError(FileUploadBase.java:633) ~[tomcat-embed-core-8.0.32.jar:8.0.32]
at org.apache.tomcat.util.http.fileupload.util.LimitedInputStream.checkLimit(LimitedInputStream.java:76) ~[tomcat-embed-core-8.0.32.jar:8.0.32]
at org.apache.tomcat.util.http.fileupload.util.LimitedInputStream.read(LimitedInputStream.java:135) ~[tomcat-embed-core-8.0.32.jar:8.0.32]
at java.io.FilterInputStream.read(FilterInputStream.java:107) ~[na:1.8.0_45]
at org.apache.tomcat.util.http.fileupload.util.Streams.copy(Streams.java:98) ~[tomcat-embed-core-8.0.32.jar:8.0.32]
at org.apache.tomcat.util.http.fileupload.util.Streams.copy(Streams.java:68) ~[tomcat-embed-core-8.0.32.jar:8.0.32]
at org.apache.tomcat.util.http.fileupload.FileUploadBase.parseRequest(FileUploadBase.java:293) ~[tomcat-embed-core-8.0.32.jar:8.0.32]
at org.apache.catalina.connector.Request.parseParts(Request.java:2776) ~[tomcat-embed-core-8.0.32.jar:8.0.32]
... 30 common frames omitted
我的应用程序如下所示:
@SpringBootApplication
public class Application {
public static void main(String[] args) {
ApplicationContext ctx = SpringApplication.run(Application.class, args);
}
}
有没有我遗漏的东西允许 @MultipartConfig
注释生效?
原文由 midgetspy 发布,翻译遵循 CC BY-SA 4.0 许可协议
如果您只想控制多部分属性,则可以使用
multipart.max-file-size
和multipart.max-request-size
属性。例如,您可以通过在application.properties
文件中添加以下配置,将最大大小提高到100Mb
:值可以使用后缀
MB
或KB
来指示 兆字节 或 千字节 大小。在引擎盖下,Spring Boot 将创建一个
MultipartConfigElement
基于MultipartProperties
并且MultipartConfigElement
将如 Spring MVC 文档 中所述使用。您可以查看MultipartAutoConfiguration
和DispatcherServletConfiguration
以及查看 Spring Boot 文档 以获取更多信息。