springboot临时文件存储目录配置方式


Posted in Java/Android onJuly 01, 2021

springboot临时文件存储目录配置

场景:

上传文件功能报错,然后排查日志。

报错日志:

The temporary upload location [/tmp/tomcat.7957874575370093230.8088/work/Tomcat/localhost/ROOT] is not valid

原因:

在linux系统中,springboot应用服务再启动(java -jar 命令启动服务)的时候,会在操作系统的/tmp目录下生成一个tomcat*的文件目录,上传的文件先要转换成临时文件保存在这个文件夹下面。

由于临时/tmp目录下的文件,在长时间(10天)没有使用的情况下,就会被系统机制自动删除掉。所以如果系统长时间没有使用到临时文件夹,就可能导致上面这个问题。

解决办法:

1.创建临时文件夹:

mkdir -p /tmp/tomcat.7957874575370093230.8088/work/Tomcat/localhost/ROOT

后面可能还会出现这种情况

2.application.properties重新配置一个文件目录,然后重启项目

# 存放Tomcat的日志、Dump等文件的临时文件夹,默认为系统的tmp文件夹
server.tomcat.basedir=/data/apps/temp

3.配置类配置临时文件存储目录

@Bean
    MultipartConfigElement multipartConfigElement() {
        MultipartConfigFactory factory = new MultipartConfigFactory();
        factory.setLocation(tmepPath);
        return factory.createMultipartConfig();
    }

Springboot修改临时文件的存储位置

报错

项目在线运行了一段时间后,上传文件时抛出如下异常:

The temporary upload location [/tmp/tomcat.*.80/work/Tomcat/localhost/ROOT] is not valid

经过查找,采用了如下的解决方式【修改临时文件的位置】

在application.yml 文件中添加

location:
  tempDir: /opt/location/tempDir #此处为*unix的系统相关位置

项目中添加配置类

@Configuration
public class MultipartConfig {
   @Value("${location.tempDir:/opt/tempDir}")
   private String tempDir;

   @Bean
   MultipartConfigElement multipartConfigElement() {
      MultipartConfigFactory factory = new MultipartConfigFactory();
      File tmpDirFile = new File(tempDir);
      // 判断文件夹是否存在
      if (!tmpDirFile.exists()) {
         tmpDirFile.mkdirs();
      }
      factory.setLocation(tempDir);
      return factory.createMultipartConfig();
   }
}

以上为个人经验,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Java/Android 相关文章推荐
Java Optional<Foo>转换成List<Bar>的实例方法
Jun 20 Java/Android
Java并发编程之Executor接口的使用
Jun 21 Java/Android
java中重写父类方法加不加@Override详解
Jun 21 Java/Android
mybatis 解决从列名到属性名的自动映射失败问题
Jun 30 Java/Android
Spring Cloud 中@FeignClient注解中的contextId属性详解
Sep 25 Java/Android
关于maven依赖 ${xxx.version}报错问题
Jan 18 Java/Android
深入浅出讲解Java8函数式编程
Jan 18 Java/Android
Spring Boot 底层原理基础深度解析
Apr 03 Java/Android
Java 通过手写分布式雪花SnowFlake生成ID方法详解
Apr 07 Java/Android
openGauss数据库JDBC环境连接配置的详细过程(Eclipse)
Jun 01 Java/Android
Ubuntu18.04下QT开发Android无法连接设备问题解决实现
Jun 01 Java/Android
Spring Boot实现文件上传下载
Aug 14 Java/Android
Mybatis-plus在项目中的简单应用
Jul 01 #Java/Android
SpringBoot 拦截器妙用你真的了解吗
解决SpringBoot文件上传临时目录找不到的问题
java实现对Hadoop的操作
Jul 01 #Java/Android
解决MultipartFile.transferTo(dest) 报FileNotFoundExcep的问题
Jul 01 #Java/Android
Java中多线程下载图片并压缩能提高效率吗
分析ZooKeeper分布式锁的实现
You might like
PHP has encountered an Access Violation
2007/01/15 PHP
php中使用ExcelFileParser处理excel获得数据(可作批量导入到数据库使用)
2010/08/21 PHP
php强制运行广告的方法
2014/12/01 PHP
php上传大文件失败的原因及应对策略
2015/10/20 PHP
Prototype Class对象学习
2009/07/19 Javascript
jquery animate 动画效果使用说明
2009/11/04 Javascript
理解Javascript_05_原型继承原理
2010/10/13 Javascript
深入解析js轮播插件核心代码的实现过程
2017/04/14 Javascript
基于JavaScript实现多级菜单效果
2017/07/25 Javascript
vue将单页面改造成多页面应用的方法
2018/11/25 Javascript
Vue项目部署在Spring Boot出现页面空白问题的解决方案
2018/11/26 Javascript
javascript数组去重方法总结(推荐)
2019/03/20 Javascript
vue-cli配置flexible过程详解
2019/07/04 Javascript
Python实现的矩阵类实例
2017/08/22 Python
python实现随机森林random forest的原理及方法
2017/12/21 Python
python处理csv数据动态显示曲线实例代码
2018/01/23 Python
python使用turtle绘制国际象棋棋盘
2019/05/23 Python
python绘制BA无标度网络示例代码
2019/11/21 Python
win10系统Anaconda和Pycharm的Tensorflow2.0之CPU和GPU版本安装教程
2019/12/03 Python
django 实现简单的插入视频
2020/04/07 Python
Ubuntu18.04安装 PyCharm并使用 Anaconda 管理的Python环境
2020/04/08 Python
iPython pylab模式启动方式
2020/04/24 Python
详解修改Anaconda中的Jupyter Notebook默认工作路径的三种方式
2021/01/24 Python
分享CSS3中必须要知道的10个顶级命令
2012/04/26 HTML / CSS
马来西亚在线药房:RoyalePharma
2019/12/01 全球购物
科室工作的个人自我评价
2013/10/30 职场文书
志愿者服务感言
2014/02/27 职场文书
毕业寄语大全
2014/04/09 职场文书
《故乡》教学反思
2014/04/10 职场文书
养牛场项目建议书
2014/05/13 职场文书
毕业生求职信范文
2014/06/29 职场文书
宇宙与人观后感
2015/06/05 职场文书
中学校园广播稿
2015/08/18 职场文书
2016年小学感恩节活动总结
2016/04/01 职场文书
推荐六本经典文学奖书籍:此生必读
2019/08/22 职场文书
CSS3 实现NES游戏机的示例代码
2021/04/21 HTML / CSS