问题描述:
springboot项目部署在linux系统中,长时间不执行文件上传,会出现文件上传失败,报错
重启服务则正常
错误原因:
文件上传文件临时存储位置‘/temp’,但是linux操作系统‘/temp’下文件自动清理的,导致上传路径找不到报错
解决办法:
自定义临时文件存储位置
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.web.servlet.MultipartConfigFactory;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import javax.servlet.MultipartConfigElement;
import java.io.File;
/**
* @Author: Liu Yue
* @Descripition:
* @Date; Create in 2021/7/14 15:29
**/
@Configuration
public class MultipartConfig{
@Value("${hake.file.projectPathTmp}")
private String projectPathTmp;
/**
*文件临时上传路径
*/
@Bean
MultipartConfigElement multipartConfigElement() {
MultipartConfigFactory factory = new MultipartConfigFactory();
String location = projectPathTmp; //指定一个固定的临时文件路径
File tmpFile =new File (location);
if(!tmpFile.exists()){
tmpFile.mkdirs();
}
factory.setLocation(location);
return factory.createMultipartConfig();
}
}
测试的时候,可以打断点,能看到临时文件再上传的时候存在,上传完成后,自动清除。