Rumah  >  Artikel  >  Java  >  Bagaimana untuk mengkonfigurasi direktori storan fail sementara dalam springboot

Bagaimana untuk mengkonfigurasi direktori storan fail sementara dalam springboot

WBOY
WBOYke hadapan
2023-05-12 23:01:043939semak imbas

Konfigurasi direktori storan fail sementara Springboot

Senario:

Fungsi fail muat naik melaporkan ralat, dan kemudian semak log.

Log ralat:

Lokasi muat naik sementara [/tmp/tomcat.7957874575370093230.8088/work/Tomcat/localhost/ROOT] tidak sah

Punca:

Dalam sistem Linux, apabila perkhidmatan aplikasi springboot dimulakan semula (arahan java -jar memulakan perkhidmatan), fail tomcat* akan dijana dalam direktori /tmp bagi sistem pengendalian, fail yang dimuat naik mesti terlebih dahulu ditukar kepada fail sementara dan disimpan di bawah folder ini.

Oleh kerana fail dalam direktori /tmp sementara tidak digunakan untuk masa yang lama (10 hari), ia akan dipadamkan secara automatik oleh mekanisme sistem. Oleh itu, jika sistem tidak menggunakan folder sementara untuk masa yang lama, ia boleh menyebabkan masalah di atas.

Penyelesaian:

1 Cipta folder sementara:

mkdir -p /tmp/tomcat.7957874575370093230.8088/work/Tomcat/localhost/ROOT
Ini mungkin berlaku lagi kemudian

2 kemudian mulakan semula projek

# 存放Tomcat的日志、Dump等文件的临时文件夹,默认为系统的tmp文件夹
server.tomcat.basedir=/data/apps/temp
3. Konfigurasi kelas konfigurasi direktori storan fail sementara

@Bean
    MultipartConfigElement multipartConfigElement() {
        MultipartConfigFactory factory = new MultipartConfigFactory();
        factory.setLocation(tmepPath);
        return factory.createMultipartConfig();
    }
Springboot mengubah suai lokasi penyimpanan fail sementara

Pelaporan ralat

Selepas projek telah berjalan dalam talian untuk satu tempoh masa, pengecualian berikut dilemparkan apabila memuat naik fail:

Lokasi muat naik sementara [/tmp/tomcat.*.80/work/Tomcat/localhost/ ROOT] tidak sah

Selepas mencari, penyelesaian berikut telah diterima pakai [Ubah suai lokasi fail sementara]

Tambah

location:
  tempDir: /opt/location/tempDir #此处为*unix的系统相关位置
pada application.yml fail dan tambah kelas konfigurasi pada projek

@Configuration
public class MultipartConfig {
   @Value("${location.tempDir:/opt/tempDir}")
   private String tempDir;

   @Bean
   MultipartConfigElement multipartConfigElement() {
      MultipartConfigFactory factory = new MultipartConfigFactory();
      File tmpDirFile = new File(tempDir);
      // 判断文件夹是否存在
      if (!tmpDirFile.exists()) {
         tmpDirFile.mkdirs();
      }
      factory.setLocation(tempDir);
      return factory.createMultipartConfig();
   }
}

Atas ialah kandungan terperinci Bagaimana untuk mengkonfigurasi direktori storan fail sementara dalam springboot. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:yisu.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam