纯净、安全、绿色的下载网站

首页|软件分类|下载排行|最新软件|IT学院

当前位置:首页IT学院IT技术

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

程序员小强   2021-11-19 我要评论
想了解SpringBoot上传临时文件被删除引起报错的解决的相关内容吗程序员小强在本文为您仔细讲解SpringBoot上传临时文件被删除的相关知识和一些Code实例欢迎阅读和指正我们先划重点:SpringBoot临时文件,上传临时文件被删除,上传临时文件下面大家一起来学习吧

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

1.前言

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

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

详见如图

image.png

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();
  }

以上为个人经验希望能给大家一个参考也希望大家多多支持


相关文章

猜您喜欢

  • C++ socket网络编程 详谈C++ socket网络编程实例

    想了解详谈C++ socket网络编程实例的相关内容吗ufgnix0802在本文为您仔细讲解C++ socket网络编程的相关知识和一些Code实例欢迎阅读和指正我们先划重点:C++网络编程实例,C++,socket下面大家一起来学习吧..
  • Python面向对象 封装、继承、多态 Python面向对象三大特征 封装、继承、多态

    想了解Python面向对象三大特征 封装、继承、多态的相关内容吗J.FengS在本文为您仔细讲解Python面向对象 封装、继承、多态的相关知识和一些Code实例欢迎阅读和指正我们先划重点:Python面向对象三大特征,Python面向对象封装,Python面向对象继承,Python面向对象多态下面大家一起来学习吧..

网友评论

Copyright 2020 www.fresh-weather.com 【世纪下载站】 版权所有 软件发布

声明:所有软件和文章来自软件开发商或者作者 如有异议 请与本站联系 点此查看联系方式