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 相关文章推荐
浅谈Python魔法方法
Jun 28 Java/Android
Jackson 反序列化时实现大小写不敏感设置
Jun 29 Java/Android
分析并发编程之LongAdder原理
Jun 29 Java/Android
springboot项目以jar包运行的操作方法
Jun 30 Java/Android
使用logback实现按自己的需求打印日志到自定义的文件里
Aug 30 Java/Android
java协程框架quasar和kotlin中的协程对比分析
Feb 24 Java/Android
解决persistence.xml配置文件修改存放路径的问题
Feb 24 Java/Android
java后台调用接口及处理跨域问题的解决
Mar 24 Java/Android
Netty客户端接入流程NioSocketChannel创建解析
Mar 25 Java/Android
Java字符缓冲流BufferedWriter
Apr 09 Java/Android
Spring Boot 使用 Spring-Retry 进行重试框架
Apr 24 Java/Android
springboot实现string转json json里面带数组
Jun 16 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
受疫情影响 动画《Re从零开始的异世界生活》第二季延期至7月
2020/03/10 日漫
使用PHP uniqid函数生成唯一ID
2015/11/18 PHP
ThinkPHP模板循环输出Volist标签用法实例详解
2016/03/23 PHP
ThinkPHP防止重复提交表单的方法实例分析
2018/05/10 PHP
基于jquery的固定表头和列头的代码
2012/05/03 Javascript
javascript SpiderMonkey中的函数序列化如何进行
2012/12/05 Javascript
整理AngularJS中的一些常用指令
2015/06/16 Javascript
Javascript中的数据类型之旅
2015/10/18 Javascript
JS实现slide文字框缩放伸展效果代码
2015/11/05 Javascript
node.js抓取并分析网页内容有无特殊内容的js文件
2015/11/17 Javascript
JavaScript实现瀑布流布局
2020/06/28 Javascript
js验证真实姓名与身份证号,手机号的简单实例
2016/07/18 Javascript
移动端使用localResizeIMG4压缩图片
2017/04/22 Javascript
js实现带进度条提示的多视频上传功能
2020/12/13 Javascript
JavaScript框架Angular和React深度对比
2017/11/20 Javascript
Vue中computed及watch区别实例解析
2020/08/01 Javascript
JS如何判断对象是否包含某个属性
2020/08/29 Javascript
[06:33]3.19 DOTA2发布会 海涛、冷冷、2009见证希望
2014/03/21 DOTA
[38:21]2014 DOTA2国际邀请赛中国区预选赛5.21 TongFu VS LGD-CDEC
2014/05/22 DOTA
[06:01]刀塔次级联赛top10第一期
2014/11/07 DOTA
如何处理Python3.4 使用pymssql 乱码问题
2016/01/08 Python
Python解决八皇后问题示例
2018/04/22 Python
Python Pexpect库的简单使用方法
2019/01/29 Python
将数据集制作成VOC数据集格式的实例
2020/02/17 Python
anaconda升级sklearn版本的实现方法
2021/02/22 Python
SISLEY希思黎官方旗舰店:享誉全球的奢华植物美容品牌
2018/04/25 全球购物
Melissa鞋英国官方网站:Nonnon
2019/05/01 全球购物
女娲补天教学反思
2014/02/05 职场文书
经典的毕业生自荐信范文
2014/04/14 职场文书
电教室标语
2014/06/20 职场文书
骨干教师事迹材料
2014/12/17 职场文书
护士节慰问信
2015/02/15 职场文书
白银帝国观后感
2015/06/17 职场文书
2016重阳节红领巾广播稿
2015/12/18 职场文书
gojs实现蚂蚁线动画效果
2022/02/18 Javascript
MySQL学习之基础命令实操总结
2022/03/19 MySQL