如果我使用StandardServletMultipartResolver
,我会正确获取文件,但如果我使用CommonsMultipartResolver
,我会为文件获取null。即使没有任何其他配置,只需将new StandardServletMultipartResolver();
替换为new CommonsMultipartResolver();
,也不会收到文件。我想强制执行maxUploadSizePerFile
,因此使用了CommonsMultipartResolver
。
在我的WebContext配置文件中,我有以下内容:
@Override
@Bean
public MultipartResolver multipartResolver() {
CommonsMultipartResolver multipartResolver = new CommonsMultipartResolver();
Long maxFileSize = environment.getRequiredProperty(PropertyConstants.MAX_FILE_UPLOAD_SIZE, Long.class);
multipartResolver.setMaxUploadSizePerFile(maxFileSize);
return multipartResolver;
}
如果我只是将CommonsMultipartResolver
替换为StandardServletMultipartResolver
,事情就会开始奏效。我在mvn依赖项中有commons-fileupload
,应用程序启动时没有任何错误。
我正在使用Tomcat 9.0.0.M1和Spring 4.2.2。
CommonsMultipartResolver
是否缺少某些配置可供使用?
答案 0 :(得分:0)
我遇到了同样的问题,但我注意到只有当CommonsFileUploadSupport
将文件存储在内存中时才会发生。作为一种解决方法,我发现将maxInMemorySize
设置为0
即可。
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<!-- max upload size in bytes -->
<property name="maxUploadSize" value="20971520" /> <!-- 20MB -->
<!-- max size of file in memory (in bytes) -->
<!-- oddly, the MultipartFile passed as a RequestParam gets set to null if I allow it to use memory
rather than disk! -->
<property name="maxInMemorySize" value="0" />
</bean>
答案 1 :(得分:-1)
转到Servers目录并尝试在工作区项目中的Tomcat Server的context.xml中添加allowCasualMultipartParsing="true"
。