概述
问题现象
系统一直运行正常有一段时间了,突然某天客户反应文件上传失败。直接提示“系统错误,请联系管理员”。
发现是这个临时文件不存在了,这个临时文件在jar启动后,会自动生成。
然而默认在Linux系统中/tmp文件夹下的文件是会被清理、删除的。
解决方案
临时方案
手动在服务器创建该文件目录,或者重启jar包。但是这样过一段时间这个文件夹又会自动被清除。
指定临时目录
在springboot中有个配置可以修改multipart 文件上传的临时目录
修改yml配置文件
spring:
servlet:
multipart:
location: /data/upload_tmp
我们自己创建一个临时目录,这样就不会被linux给自动清除。
项目自动自动创建
@Bean
@ConditionalOnProperty(prefix = "tmp.dir", value = "app", matchIfMissing = true)
public MultipartConfigElement multipartConfigElement() {
MultipartConfigFactory factory = new MultipartConfigFactory();
ApplicationHome applicationHome = new ApplicationHome(getClass());
File tmpDir = new File(applicationHome.getDir().getAbsoluteFile(), "tmp");
if (!tmpDir.exists()) {
tmpDir.mkdirs();
LOGGER.info("tmp directory is created.{}", tmpDir.getAbsoluteFile());
}
String tmpDirStr = tmpDir.getAbsolutePath();
LOGGER.info("set tmp dir {}",tmpDirStr);
factory.setLocation(tmpDirStr);
return factory.createMultipartConfig();
}
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/99924.html