spring boot MultipartResolver 为空问题

发布于 2023-04-03 12:57:03 字数 1281 浏览 90 评论 0

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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

关于作者

梦行七里

暂无简介

文章
评论
28 人气
更多

推荐作者

櫻之舞

文章 0 评论 0

弥枳

文章 0 评论 0

m2429

文章 0 评论 0

野却迷人

文章 0 评论 0

我怀念的。

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文