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 相关文章推荐
解决Maven项目中 Invalid bound statement 无效的绑定问题
Jun 15 Java/Android
Java并发编程之Executor接口的使用
Jun 21 Java/Android
Java图书管理系统,课程设计必用(源码+文档)
Jun 30 Java/Android
JUnit5常用注解的使用
Jul 02 Java/Android
spring boot中nativeQuery的用法
Jul 26 Java/Android
java调用Restful接口的三种方法
Aug 23 Java/Android
Java并发编程之原子性-Atomic的使用
Mar 16 Java/Android
SpringBoot整合minio快速入门教程(代码示例)
Apr 03 Java/Android
Java存储没有重复元素的数组
Apr 29 Java/Android
Mybatis-plus配置分页插件返回统一结果集
Jun 21 Java/Android
Android实现图片九宫格
Jun 28 Java/Android
Spring boot admin 服务监控利器详解
Aug 05 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
CentOS6.5 编译安装lnmp环境
2014/12/21 PHP
深入讲解PHP的Yii框架中的属性(Property)
2016/03/18 PHP
ThinkPHP5.1验证码功能实现的示例代码
2020/06/08 PHP
取选中的radio的值
2010/01/11 Javascript
基于JQuery的密码强度验证代码
2010/03/01 Javascript
javascript倒计时功能实现代码
2012/06/07 Javascript
javascript学习笔记(十七) 检测浏览器插件代码
2012/06/20 Javascript
浅谈window对象的scrollBy()方法
2015/07/15 Javascript
javascript简单实现类似QQ头像弹出效果的方法
2015/08/03 Javascript
js改变html的原有内容实现方法
2016/10/05 Javascript
纯JS打造网页中checkbox和radio的美化效果
2016/10/13 Javascript
jQuery实现复选框的全选和反选
2017/02/02 Javascript
微信小程序 仿猫眼实现实例代码
2017/03/14 Javascript
jquery实现提示语淡入效果
2017/05/05 jQuery
微信小程序 获取session_key和openid的实例
2017/08/17 Javascript
Nuxt.js实现校验访问浏览器类型的中间件
2018/08/24 Javascript
小程序实现悬浮搜索框
2019/07/12 Javascript
js判断浏览器的环境(pc端,移动端,还是微信浏览器)
2020/12/24 Javascript
vue实现员工信息录入功能
2020/06/11 Javascript
在vue中使用vant TreeSelect分类选择组件操作
2020/11/02 Javascript
详解Java中String JSONObject JSONArray List转换
2020/11/13 Javascript
vue使用echarts画组织结构图
2021/02/06 Vue.js
python编写爬虫小程序
2015/05/14 Python
python实现百度语音识别api
2018/04/10 Python
numpy数组之存取文件的实现示例
2019/05/24 Python
Python 处理文件的几种方式
2019/08/23 Python
Django DRF认证组件流程实现原理详解
2020/08/17 Python
彻底解决Python包下载慢问题
2020/11/15 Python
白宫黑市官网:White House Black Market
2016/11/17 全球购物
副总经理工作职责
2013/11/28 职场文书
测量工程专业求职信
2014/02/24 职场文书
2014院党委领导班子对照检查材料思想汇报
2014/09/24 职场文书
2015秋季小学开学寄语
2015/05/27 职场文书
2019优秀干部竞聘演讲稿范文!
2019/07/02 职场文书
JAVA API 实用类 String详解
2021/10/05 Java/Android
Python中字符串对象语法分享
2022/02/24 Python