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集成flyway自动创表的详细配置
Jun 26 Java/Android
Spring Boot两种全局配置和两种注解的操作方法
Jun 29 Java/Android
Java生成读取条形码和二维码的简单示例
Jul 09 Java/Android
关于springboot配置druid数据源不生效问题(踩坑记)
Sep 25 Java/Android
Java8中接口的新特性使用指南
Nov 01 Java/Android
java objectUtils 使用可能会出现的问题
Feb 28 Java/Android
JavaWeb实现显示mysql数据库数据
Mar 19 Java/Android
SpringBoot2零基础到精通之数据与页面响应
Mar 22 Java/Android
教你在 Java 中实现 Dijkstra 最短路算法的方法
Apr 08 Java/Android
Java8 Stream API 提供了一种高效且易于使用的处理数据的方式
Apr 13 Java/Android
Spring 使用注解开发
May 20 Java/Android
HttpClient实现文件上传功能
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
dedecms 批量提取第一张图片最为缩略图的代码(文章+软件)
2009/10/29 PHP
PHP生成网站桌面快捷方式代码分享
2014/10/11 PHP
从性能方面考虑PHP下载远程文件的3种方法
2015/12/29 PHP
php生成与读取excel文件
2016/10/14 PHP
php lcg_value与mt_rand生成0~1随机小数的效果对比分析
2017/04/05 PHP
thinkPHP框架整合tcpdf插件操作示例
2018/08/07 PHP
详解no input file specified 三种解决方法
2019/11/29 PHP
Thinkphp5+Redis实现商品秒杀代码实例讲解
2020/12/29 PHP
js 巧妙去除数组中的重复项
2010/01/25 Javascript
javascript 拖动表格行实现代码
2011/05/05 Javascript
js身份证判断方法支持15位和18位
2014/03/18 Javascript
JavaScript控制各种浏览器全屏模式的方法、属性和事件介绍
2014/04/03 Javascript
jQuery中end()方法用法实例
2015/01/08 Javascript
JavaScript动态改变表格单元格内容的方法
2015/03/30 Javascript
jquery实现自适应banner焦点图
2017/02/16 Javascript
vue.js todolist实现代码
2017/10/29 Javascript
JavaScript模拟实现自由落体效果
2018/08/28 Javascript
探秘vue-rx 2.0(推荐)
2018/09/21 Javascript
angular 服务随记小结
2019/05/06 Javascript
JQuery获取可视区尺寸和文档尺寸及制作悬浮菜单示例
2019/05/14 jQuery
JS左右无缝轮播功能完整实例
2019/05/16 Javascript
[33:17]OG vs VGJ.T 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
Python简单网络编程示例【客户端与服务端】
2017/05/26 Python
简单了解Python中的几种函数
2017/11/03 Python
python 定义给定初值或长度的list方法
2018/06/23 Python
Flask框架Jinjia模板常用语法总结
2018/07/19 Python
Python实现繁?转为简体的方法示例
2018/12/18 Python
一款纯css3实现的竖形二级导航的实例教程
2014/12/11 HTML / CSS
html5 viewport使用方法示例详解
2013/12/02 HTML / CSS
基本款天堂:Everlane
2017/05/13 全球购物
Diesel美国网上商店:意大利牛仔时装品牌
2020/12/10 全球购物
老师推荐信
2013/10/28 职场文书
村党建工作汇报材料
2014/11/02 职场文书
2014年个人工作总结报告
2014/11/27 职场文书
高三毕业评语
2014/12/31 职场文书
队列队形口号
2015/12/25 职场文书