Spring BootTomcat一時ディレクトリtmpがエラー例外をスローする

まず、http POSTリクエストの場合、この一時ディレクトリを使用してPOSTデータを保存する必要があることを知っておく必要があります。
次に、ディレクトリは/ tempディレクトリにぶら下がっている一時ファイルであるため、centOSなどの一部のOSシステムでは、この一時ディレクトリが削除されることが多く、その結果、ディレクトリは存在しなくなります。

解決

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/追加して再起動します

上記はすべてRuoyiの公式サイトを参照していますが、一時ディレクトリ内の異常ファイルを削除できないという欠点があるため、以下の方法を使用しました。

5.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