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 相关文章推荐
springboot中一些比较常用的注解总结
Jun 11 Java/Android
Springboot集成阿里云OSS上传文件系统教程
Jun 28 Java/Android
springboot项目以jar包运行的操作方法
Jun 30 Java/Android
JUnit5常用注解的使用
Jul 02 Java/Android
Java实现聊天机器人完善版
Jul 04 Java/Android
JavaWeb 入门篇(3)ServletContext 详解 具体应用
Jul 16 Java/Android
mybatis源码解读之executor包语句处理功能
Feb 15 Java/Android
Android开发之WECHAT微信小程序路由跳转的两种形式
Apr 12 Java/Android
Android Studio实现简易进制转换计算器
May 20 Java/Android
Java数据结构之堆(优先队列)
May 20 Java/Android
详解Spring Bean的配置方式与实例化
Jun 10 Java/Android
一文了解Java动态代理的原理及实现
Jul 07 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目录操作函数之获取目录与文件的类型
2010/12/29 PHP
php中XMLHttpRequest(Ajax)不能设置自定义的Referer的解决方法
2011/11/26 PHP
关于使用key/value数据库redis和TTSERVER的心得体会
2013/06/28 PHP
PHP动态输出JavaScript代码实例
2015/02/12 PHP
PHP让数组中有相同值的组成新的数组实例
2017/12/31 PHP
jquery 操作单选框,复选框,下拉列表实现代码
2009/10/27 Javascript
jQuery实现长文字部分显示代码
2013/05/13 Javascript
Js注册协议倒计时的小例子
2013/06/24 Javascript
jquery创建表格(自动增加表格)代码分享
2013/12/25 Javascript
JavaScript实现简洁的俄罗斯方块完整实例
2016/03/01 Javascript
一次$.getJSON不执行的简单记录
2016/07/19 Javascript
AngularJS入门教程之过滤器详解
2016/08/19 Javascript
搭建Bootstrap离线文档的方法
2016/12/02 Javascript
ES6新特性八:async函数用法实例详解
2017/04/21 Javascript
js实现多张图片延迟加载效果
2017/07/17 Javascript
pm2 部署 node的三种方法示例
2017/10/20 Javascript
微信小程序实现点击按钮修改view标签背景颜色功能示例【附demo源码下载】
2017/12/06 Javascript
小程序实现列表删除功能
2018/10/30 Javascript
深入了解Vue动态组件和异步组件
2021/01/26 Vue.js
vue 项目@change多个参数传值多个事件的操作
2021/01/29 Vue.js
Python的Django框架中if标签的相关使用
2015/07/15 Python
利用python获取某年中每个月的第一天和最后一天
2016/12/15 Python
python生成器,可迭代对象,迭代器区别和联系
2018/02/04 Python
对pyqt5多线程正确的开启姿势详解
2019/06/14 Python
通过python改变图片特定区域的颜色详解
2019/07/15 Python
python使用 __init__初始化操作简单示例
2019/09/26 Python
深入浅析Python 中的sklearn模型选择
2019/10/12 Python
有关pycharm登录github时有的时候会报错connection reset的问题
2020/09/15 Python
材料工程专业毕业生求职信
2014/03/04 职场文书
2015年“七七卢沟桥事变”纪念活动总结
2015/03/24 职场文书
会计求职自荐信
2015/03/26 职场文书
离婚协议书范文2016
2016/03/18 职场文书
redis连接被拒绝的解决方案
2021/04/12 Redis
使用feign服务调用添加Header参数
2021/06/23 Java/Android
Python anaconda安装库命令详解
2021/10/16 Python
python脚本框架webpy模板赋值实现
2021/11/20 Python