spring boot MultipartResolver 为空问题
spring mvc 使用的是 CommonsMultipartResolver,spring boot 默认使用的是 StandardServletMultipartResolver
如果从 spring mvc 切换到 spring boot,上传文件使用的是相对路径,StandardServletMultipartResolver 会将文件生成一个文件夹,造成在数据转换的时候获取不到上传文件。以下为 StandardServletMultipartResolver 写文件时的判断。
public void write(String fileName) throws IOException {
File file = new File(fileName);
if (!file.isAbsolute()) {
file = new File(this.location, fileName);
}
try {
this.fileItem.write(file);
} catch (Exception var4) {
throw new IOException(var4);
}
}
如果需要继续使用默认的方式,则在配置文件中定义 location,并且修改之前的上传方法,改动会比较大。建议继续使用 CommonsMultipartResolver,添加 CommonsMultipartResolver,同时将默认的 multipart 的 enabled 设置为 false(如果两个同时开启,则默认的 multipart 会优先消费掉文件流,导致在 CommonsMultipartResolver 无法获取到文件)
@Bean
public MultipartResolver getMultipartResolver() {
CommonsMultipartResolver commonsMultipartResolver = new CommonsMultipartResolver();
commonsMultipartResolver.setResolveLazily(true);
commonsMultipartResolver.setDefaultEncoding("UTF-8");
commonsMultipartResolver.setMaxInMemorySize(52428800);
commonsMultipartResolver.setMaxUploadSize(52428800);
return commonsMultipartResolver;
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论