2025年6月6日 星期五 乙巳(蛇)年 三月初十 设为首页 加入收藏
rss
您当前的位置:首页 > 计算机 > 编程开发 > Spring Boot

spring boot MultipartResolver 为空问题

时间:12-14来源:作者:点击数:6
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
方便获取更多学习、工作、生活信息请关注本站微信公众号城东书院 微信服务号城东书院 微信订阅号
推荐内容
相关内容
栏目更新
栏目热门
本栏推荐