SpringBoot上传临时文件被删除引起报错的解决

网友投稿 2299 2022-11-21

SpringBoot上传临时文件被删除引起报错的解决

SpringBoot上传临时文件被删除引起报错的解决

目录上传临时文件被删除引起报错的解决1.前言2.问题分析3.解决方案文件上传提示临时文件夹不存在1.异常信息2.原因3.解决方法

上传临时文件被删除引起报错的解决

1.前言

在项目中使用到了SpringBoot的上传实现了一个excel导入功能,上线后稳得一批,但突然有一天发现,导入失败报错:

location [/tmp/tomcat.xxx.8551/work/Tomcat/localhost/root] is not valid

详见如图

2.问题分析

在SpringBoot项目启动后,系统会在‘/tmp'目录下自动的创建以下几个文件;

hsperfdata_root

tomcat.************.8080,(结尾为端口)

tomcat-docbase.*********.8080 ;

程序对上传文件操作时,会生成临时文件,暂存在临时文件目录中,经查阅资料发现CentOS有自动清理规则,系统会对/tmp下10天未使用的文件进行清理,清理后再次使用文件上传就会出现以上问题 ;

3.解决方案

3.1重启项目

启动时会自动新建临时目录的。但是以后依旧会有被系统自动清除的可能(未彻底解决)。

3.2自定义临时文件路径

新增如下配置

server.tomcat.basedir=/home/dev/temp

注意事项:

需要重启项目生效 ;

若启动项目的用户有权限在该目录下创建文件夹,则会自动创建 ;

3.2新增配置

配置类方式指定临时文件路径

@Configuration

public class MultipartConfig {

/**

* 文件上传临时路径

*/

@Bean

MultipartConfigElement multipartConfigElement() {

MultipartConfigFactory factory = new MultipartConfigFactory();

String location = System.getProperty("user.dir") + "/dev/temp";

File tmpFile = new File(location);

if (!tmpFile.exists()) {

tmpFile.mkdirs();

}

factory.setLocation(location);

return factory.createMultipartConfig();

}

}

文件上传提示临时文件夹不存在

1.异常信息

java.io.IOException: The temporary upload location [C:\Users\Administrator\AppData\Local\Temp\tomcat.1668302398522753093.8383\work\Tomcat\loca lhost\ROOT] is not valid

2.原因

文件上传临时上传文件夹失效了,可能是系统清除了临时目录。

3.解决方法

1.重启服务,不建议在生产环境使用。

2.增加服务配置,自定义baseDir。

server.tomcat.basedir=/tmp/tomcat

3.注入bean,手动配置临时目录,建议有项目组统一配置,便于管理和错误定位。

@Bean

MultipartConfigElement multipartConfigElement() {

MultipartConfigFactory factory = new MultipartConfigFactory();

factory.setLocation("/tmp/tomcat");

return factory.createMultipartConfig();

}

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:维度建模-三大模型
下一篇:SortShuffleManager
相关文章

 发表评论

暂时没有评论,来抢沙发吧~