美文网首页
Spring Boot 上传文件出错:java.io.IOExc

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

作者: small瓜瓜 | 来源:发表于2020-08-21 11:11 被阅读0次

    线上项目上传文件功能突然报错,这是一个比较严重的问题,下面带大家看看一个文件上传的神秘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删除文件的逻辑,系统级别的命令,不建议操作

    相关文章

      网友评论

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

          本文链接:https://www.haomeiwen.com/subject/mwywhktx.html