您当前的位置:首页 > 计算机 > 编程开发 > Spring Boot

spring boot MultipartResolver 为空问题

时间:12-14来源:作者:点击数:
CDSY,CDSY.XYZ

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;
}
CDSY,CDSY.XYZ
方便获取更多学习、工作、生活信息请关注本站微信公众号城东书院 微信服务号城东书院 微信订阅号
推荐内容
相关内容
栏目更新
栏目热门
本栏推荐