java.io.IOException: The temporary upload location [/tmp/tomcat.xxx.xxx/work/Tomcat/localhost/ROOT]

问题:

  今天在改BUG的时候,发现报错了这样一段话

  Failed to parse multipart servlet request; nested exception is java.io.IOException: The temporary upload location [/tmp/tomcat.1428942566812653608

  这是啥呀?

有文件上传功能的springboot项目,在Linux系统部署之后(使用 java  -jar运行),会在系统的tmp目录生成一个带tomcat及随机字符串的临时目录,如:/tmp/tomcat.7555554548062926924.7995/work/Tomcat/localhost/folder,

  • 程序对文件的操作时:会生成临时文件,暂存在临时文件中;Linux系统的tmpwatch 命令会删除10天未使用的临时文件;长时间不进行上传操作,导致/tmp下面的tomcat临时文件目录被删除,且删除的文件不可恢复,上传文件时获取不到文件目录,导致报错。

 这时候就会报错:

Failed to parse multipart servlet request; nested exception is java.io.IOException: The temporary upload location [/tmp/tomcat.7555554548062926924.7995/work/Tomcat/localhost/folder] is not valid"

解决方案: 

1、简单粗暴,直接重启项目,让系统重新生成临时文件,就可以了。

2、application.yml文件中设置

server
  tomcat:
     basedir: /tmp/tomcat

3、application.yml文件中设置multipart location ,并重启项目

spring:
  http:
    multipart:
      location: /data/upload_tmp

4、在配置文件添加bean

@Configurationxs
public class MultipartConfig {

    
    @Bean
    public MultipartConfigElement multipartConfigElement(){
        MultipartConfigFactory factory = new MultipartConfigFactory();
        File file = new File("/tmp/dir");
//        判断文件是否存在
        if (!file.exists()){
            //不存在则创建
            file.mkdirs();
        }
        factory.setLocation("/tmp/dir");
        return factory.createMultipartConfig();
    }
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值