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 相关文章推荐
解析Java异步之call future
Jun 14 Java/Android
Java框架入门之简单介绍SpringBoot框架
Jun 18 Java/Android
深入浅出讲解Java8函数式编程
Jan 18 Java/Android
SpringBoot中HttpSessionListener的简单使用方式
Mar 17 Java/Android
Java字符串逆序方法详情
Mar 21 Java/Android
Java Lambda表达式常用的函数式接口
Apr 07 Java/Android
Java 常见的限流算法详细分析并实现
Apr 07 Java/Android
Java版 单机五子棋
May 04 Java/Android
Android studio 简单计算器的编写
May 20 Java/Android
Android开发手册自定义Switch开关按钮控件
Jun 10 Java/Android
httpclient调用远程接口的方法
Aug 14 Java/Android
Java获取字符串编码格式实现思路
Sep 23 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检索或者复制远程文件的方法
2015/03/13 PHP
php使用FFmpeg接口获取视频的播放时长、码率、缩略图以及创建时间
2016/11/07 PHP
使用PHP连接数据库_实现用户数据的增删改查的整体操作示例
2017/09/01 PHP
jquery load()在firefox(火狐)下显示不正常的解决方法
2011/04/05 Javascript
基于mouseout和mouseover等类似事件的冒泡问题解决方法
2013/11/18 Javascript
javascript中的循环语句for语句深入理解
2014/04/04 Javascript
多个js毫秒倒计时同时进行效果
2016/01/05 Javascript
深入浅析JavaScript中的3DES
2016/08/24 Javascript
ionic由于使用了header和subheader导致被遮挡的问题的两种解决方法
2016/09/22 Javascript
BootStrap daterangepicker 双日历控件
2017/06/02 Javascript
Angular.js初始化之ng-app的自动绑定与手动绑定详解
2017/07/31 Javascript
weui框架实现上传、预览和删除图片功能代码
2017/08/24 Javascript
element-ui 的el-button组件中添加自定义颜色和图标的实现方法
2018/10/26 Javascript
详解关于html,css,js三者的加载顺序问题
2019/04/10 Javascript
JavaScript实现Tab选项卡切换
2020/02/13 Javascript
[01:04:14]OG vs Winstrike 2018国际邀请赛小组赛BO2 第二场 8.19
2018/08/21 DOTA
[51:00]Secret vs VGJ.S 2018国际邀请赛淘汰赛BO3 第一场 8.24
2018/08/25 DOTA
图文讲解选择排序算法的原理及在Python中的实现
2016/05/04 Python
Linux-ubuntu16.04 Python3.5配置OpenCV3.2的方法
2018/04/02 Python
python 显示数组全部元素的方法
2018/04/19 Python
Python实现删除排序数组中重复项的两种方法示例
2019/01/31 Python
Django Sitemap 站点地图的实现方法
2019/04/29 Python
python爬虫 Pyppeteer使用方法解析
2019/09/28 Python
如何修复使用 Python ORM 工具 SQLAlchemy 时的常见陷阱
2019/11/19 Python
Pyecharts 中Geo函数常用参数的用法说明
2021/02/01 Python
html5.2 dialog简介详解
2018/02/27 HTML / CSS
鱼油专家:Omegavia
2016/10/10 全球购物
荷兰鞋类购物网站:Donelli
2019/05/24 全球购物
初中高效课堂实施方案
2014/02/26 职场文书
党员教师个人对照检查材料(群众路线)
2014/09/26 职场文书
民主评议党员工作总结
2014/10/20 职场文书
幼师辞职信范文
2015/02/27 职场文书
创业计划书之网络外卖
2019/10/31 职场文书
Python 如何安装Selenium
2021/05/06 Python
JavaWeb 入门篇(3)ServletContext 详解 具体应用
2021/07/16 Java/Android
create-react-app开发常用配置教程
2022/06/25 Javascript