Spring Boot Tomcat临时目录tmp抛错误异常

首先,我们应该知道,对于http POST请求来说,它需要使用这个临时目录来存储post数据。
其次,因为该目录是挂在到/temp目录下的临时文件,那么对于一些OS系统,像centOS将经常删除这个临时目录,所有导致该目录不存在了

解决方案

1.在application.yml文件中设置multipart location ,并重启项目

spring:
  http:
    multipart:
      location: /data/upload_tmp

2.在application.yml文件中设置

server
  tomcat:
     basedir: /tmp/tomcat

3.在配置文件添加bean

@Bean
public MultipartConfigElement multipartConfigElement() {
    
    
  MultipartConfigFactory factory = new MultipartConfigFactory();
  factory.setLocation("/tmp/tomcat");
  return factory.createMultipartConfig();
}

4.添加启动参数-java.tmp.dir=/path/to/application/temp/,并重启。

以上都是参考若依官网,但是有个缺点,异常的文件在临时目录就无法删除,所以我用的是下面的方式。

5.TomcatEmbeddedServletContainerFactory.setBaseDirectory(file);

@Configuration
public class TomcatConfig {
    
    
    private static final Log LOG = LogFactory.get();

    @Bean
    public TomcatEmbeddedServletContainerFactory servletContainer() {
    
    
        TomcatEmbeddedServletContainerFactory factory = new MyTomcatEmbeddedServletContainerFactory();
        // 服务上下文配置
        // factory.setContextPath("/test");
        setBaseDirAndClean(factory);
        return factory;
    }

    // 指定内置tomcat的工作目录
    private void setBaseDirAndClean(
            TomcatEmbeddedServletContainerFactory factory) {
    
    
        File file = new File("./tomcat/laker/tmp");
        try {
    
    
            if (FileUtil.exist(file)) {
    
    
                List<File> files = FileUtil.loopFiles(file);
                if (CollUtil.isNotEmpty(files)) {
    
    
                    for (File delfile : files) {
    
    
                        delfile.delete();
                    }
                }
            } else {
    
    
                FileUtil.mkdir(file);
            }
        } catch (IORuntimeException e) {
    
    
            LOG.error(e);
        }
        factory.setBaseDirectory(file);
    }
}

参考:

  • https://doc.ruoyi.vip/ruoyi/other/faq.html#tomcat%E4%B8%B4%E6%97%B6%E7%9B%AE%E5%BD%95tmp%E6%8A%9B%E9%94%99%E8%AF%AF%E5%BC%82%E5%B8%B8

猜你喜欢

转载自blog.csdn.net/abu935009066/article/details/114596193
今日推荐