Spring Boot 上传文件出错:java.io.IOExc

2020-08-21  本文已影响0人  small瓜瓜

线上项目上传文件功能突然报错,这是一个比较严重的问题,下面带大家看看一个文件上传的神秘bug

Caused by: java.io.IOException: The temporary upload location 
[C:\Users\maomao\AppData\Local\Temp\tomcat.15432125454846448.2357\work\Tom
cat\localhost\ROOT] is not valid

异常就像是上面那样,tomcat在启动的时候会生成一个临时的上传文件保存的位置,但是这个位子默认是放在系统的临时文件夹中。当这个tomcat创建的文件夹被系统删除后,这时在上传文件就出现问题了。

具体解决方法在:

  1. 重启服务,tomcat会从新生成新的临时目录,不过这样后面还是会出现之前的情况,所以不建议在生成环境中使用。
  2. application.properties文件中配置server.tomcat.basedir=自定义目录
  3. 启动时增加参数-Djava.io.tmpdir=自定义目录
  4. 添加一个配置bean:
  @Autowired
  private TomcatBean tomcatBean;

  @Bean
  MultipartConfigElement multipartConfigElement() {
      File root = new File(tomcatBean.getBasedir());
      if (!root.exists() || root.isFile()) {
          Assert.isTrue(root.mkdirs(), "创建临时文件目录失败!");
      }
      MultipartConfigFactory factory = new MultipartConfigFactory();
      factory.setLocation(tomcatBean.getBasedir());
      return factory.createMultipartConfig();
  }
  1. 修改tmpwatch删除文件的逻辑,系统级别的命令,不建议操作
上一篇下一篇

猜你喜欢

热点阅读