Spring Boot 上传文件出错:java.io.IOExc
2020-08-21 本文已影响0人
small瓜瓜
线上项目上传文件功能突然报错,这是一个比较严重的问题,下面带大家看看一个文件上传的神秘bug
Caused by: java.io.IOException: The temporary upload location
[C:\Users\maomao\AppData\Local\Temp\tomcat.15432125454846448.2357\work\Tom
cat\localhost\ROOT] is not valid
异常就像是上面那样,tomcat
在启动的时候会生成一个临时的上传文件保存的位置,但是这个位子默认是放在系统的临时文件夹中。当这个tomcat
创建的文件夹被系统删除后,这时在上传文件就出现问题了。
具体解决方法在:
- 重启服务,
tomcat
会从新生成新的临时目录,不过这样后面还是会出现之前的情况,所以不建议在生成环境中使用。 - 在
application.properties
文件中配置server.tomcat.basedir=自定义目录
- 启动时增加参数
-Djava.io.tmpdir=自定义目录
- 添加一个配置
bean
:
@Autowired
private TomcatBean tomcatBean;
@Bean
MultipartConfigElement multipartConfigElement() {
File root = new File(tomcatBean.getBasedir());
if (!root.exists() || root.isFile()) {
Assert.isTrue(root.mkdirs(), "创建临时文件目录失败!");
}
MultipartConfigFactory factory = new MultipartConfigFactory();
factory.setLocation(tomcatBean.getBasedir());
return factory.createMultipartConfig();
}
- 修改
tmpwatch
删除文件的逻辑,系统级别的命令,不建议操作