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 相关文章推荐
深入理解以DEBUG方式线程的底层运行原理
Jun 21 Java/Android
基于Java的MathML转图片的方法(示例代码)
Jun 23 Java/Android
Feign调用全局异常处理解决方案
Jun 24 Java/Android
Springboot集成阿里云OSS上传文件系统教程
Jun 28 Java/Android
死磕 java同步系列之synchronized解析
Jun 28 Java/Android
Java常用函数式接口总结
Jun 29 Java/Android
解决ObjectMapper.convertValue() 遇到的一些问题
Jun 30 Java/Android
SpringBoot实现quartz定时任务可视化管理功能
Aug 30 Java/Android
Java基于Dijkstra算法实现校园导游程序
Mar 17 Java/Android
Java实现二分搜索树的示例代码
Mar 17 Java/Android
Spring Security使用单点登录的权限功能
Apr 03 Java/Android
带你了解Java中的ForkJoin
Apr 28 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
DC四月将推出百页特刊漫画 纪念小丑诞生80周年
2020/04/09 欧美动漫
Win9x/ME下Apache+PHP安装配置
2006/10/09 PHP
台湾中原大学php教程孙仲岳主讲
2008/01/07 PHP
php 数学运算验证码实现代码
2009/10/11 PHP
PHP日期处理函数 整型日期格式
2011/01/12 PHP
php根据操作系统转换文件名大小写的方法
2014/02/24 PHP
php实现购物车功能(上)
2020/07/23 PHP
PHP获取当前执行php文件名的代码
2017/03/02 PHP
一文看懂PHP进程管理器php-fpm
2020/06/01 PHP
jQuery页面加载初始化常用的三种方法
2014/06/04 Javascript
jQuery插件zoom实现图片全屏放大弹出层特效
2015/04/15 Javascript
JS实现完全语义化的网页选项卡效果代码
2015/09/15 Javascript
jQuery+CSS3折叠卡片式下拉列表框实现效果
2015/11/02 Javascript
Jquery基础之事件操作详解
2016/06/14 Javascript
JS实现改变HTML上文字颜色和内容的方法
2016/12/30 Javascript
js 输入框 正则表达式(菜鸟必看教程)
2017/02/19 Javascript
jQuery插件FusionCharts实现的MSBar3D图效果示例【附demo源码】
2017/03/23 jQuery
ES6学习笔记之Set和Map数据结构详解
2017/04/07 Javascript
javascript中new Array()和var arr=[]用法区别
2017/12/01 Javascript
微信小程序学习总结(三)条件、模板、文件引用实例分析
2020/06/04 Javascript
jQuery实现简单全选框
2020/09/13 jQuery
python使用正则表达式提取网页URL的方法
2015/05/26 Python
详解Golang 与python中的字符串反转
2017/07/21 Python
Python编程之黑板上排列组合,你舍得解开吗
2017/10/30 Python
python生成器与迭代器详解
2019/01/01 Python
Python文件读写常见用法总结
2019/02/22 Python
详解django中url路由配置及渲染方式
2019/02/25 Python
详解Python3 基本数据类型
2019/04/19 Python
如何用Python来搭建一个简单的推荐系统
2019/08/07 Python
你需要学会的8个Python列表技巧
2020/06/24 Python
女性时尚在线:IVRose
2019/02/23 全球购物
普天C++笔试题
2016/03/20 面试题
八年级数学教学反思
2014/01/31 职场文书
事业单位绩效考核实施方案
2014/03/27 职场文书
国家税务局干部作风整顿整改措施
2014/09/18 职场文书
德劲DE1107指针试高灵敏度全波段收音机机评
2022/04/05 无线电