项目运行一段时间,上传文件突然有问题?原来是这样!

问题描述

项目运行了一段时间,上传文件,突然报错误,一时间慌了神,立马问百度,恍然大悟。

The temporary upload location 
[C:\Users\test\AppData\Local\Temp\tomcat.8083403186712289847.8080\work\Tomcat\localhost\ROOT] is not valid 
  • Tomcat在上传文件的时候,会先将文件上传至临时文件夹(默认情况下,tomcat 启动的时候会在 tmp 下
    进行初始化临时文件夹,如果上传文件没有指定临时文件夹的位置,这个时候默认为Tomcat 的基本工作路径),由于Linux系统会定期对tmp 下的文件夹进行清除, 而一旦这个目录被系统清除掉,在上传文件的时候就会导致找不到路径 而报错;
  • springboot内嵌tomcat,上传文件时会存放到tomcat临时文件目录,如:C:\Users\test\AppData\Local\Temp\tomcat.8083403186712289847.8080\work\Tomcat\localhost\ROOT。
  • springboot项目自动删除了临时文件,而且部署在linux上的项目,linux系统会定时清理/tmp目录下的内容,一般为10天。

解决方案

  1. 重启项目,可临时解决,但过段时间又会出现
  2. 在application.properties文件中,指定上传文件的临时路径,即multipart location ,并重启项目
spring. http.multipart.location= /data/upload_tmp
  1. 在application.properties文件中,设置tomcat 的基本工作目录
#不能与multipart.location同时设置
server.tomcat.basedir=/tmp/tomcat
  1. 在配置文件添加bean
@Configuration
public class MultipartConfig {
    @Bean
    MultipartConfigElement multipartConfigElement() {
        MultipartConfigFactory factory = new MultipartConfigFactory();
        factory.setLocation("/");  //自定义路径
        return factory.createMultipartConfig();
    }
}
  1. 添加启动参数 -java.tmp.dir=/path/to/application/temp/,并重启
nohup java -jar filemanage.jar -java.tmp.dir=/data/temp &

参考:Go Go

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值