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垃圾回收器
Jun 16 Java/Android
idea搭建可运行Servlet的Web项目
Jun 26 Java/Android
探讨Java中的深浅拷贝问题
Jun 26 Java/Android
详解Java七大阻塞队列之SynchronousQueue
Sep 04 Java/Android
OpenCV实现普通阈值
Nov 17 Java/Android
spring cloud eureka 服务启动失败的原因分析及解决方法
Mar 17 Java/Android
Java 使用类型为Object的变量指向任意类型的对象
Apr 13 Java/Android
Java 数组的使用
May 11 Java/Android
Spring Security动态权限的实现方法详解
Jun 16 Java/Android
Java中的Kotlin 内部类原理
Jun 16 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的错误信息
2006/10/09 PHP
PHP 如何向 MySQL 发送数据
2006/10/09 PHP
分享一个php 的异常处理程序
2014/06/22 PHP
php中隐形字符65279(utf-8的BOM头)问题
2014/08/16 PHP
使用PHPCMS搭建wap手机网站
2015/09/20 PHP
PHP PDO和消息队列的个人理解与应用实例分析
2019/11/25 PHP
autoIMG 基于jquery的图片自适应插件代码
2011/03/12 Javascript
基于jquery的文本框与autocomplete结合使用(asp.net+json)
2012/05/30 Javascript
Extjs中RowExpander控件的默认展开问题示例探讨
2014/01/24 Javascript
如何在MVC应用程序中使用Jquery
2014/11/17 Javascript
JS网页在线获取鼠标坐标值的方法
2015/02/28 Javascript
谈谈对offsetleft兼容性的理解
2015/11/11 Javascript
jQuery解决浏览器兼容性问题案例分析
2016/04/15 Javascript
老生常谈js动态添加事件--- 事件委托
2016/07/19 Javascript
Node.js利用Net模块实现多人命令行聊天室的方法
2016/12/23 Javascript
Javascript 严格模式use strict详解
2017/09/16 Javascript
Vue实战之vue登录验证的实现代码
2017/10/31 Javascript
bootstrap实现二级下拉菜单效果
2017/11/23 Javascript
React中的refs的使用教程
2018/02/13 Javascript
webpack4打包vue前端多页面项目
2018/09/17 Javascript
php结合js实现多条件组合查询
2019/05/28 Javascript
浅谈vuex为什么不建议在action中修改state
2020/02/02 Javascript
详细分析JavaScript中的深浅拷贝
2020/09/17 Javascript
[02:16]DOTA2超级联赛专访Burning 逆袭需要抓住机会
2013/06/24 DOTA
python通过urllib2爬网页上种子下载示例
2014/02/24 Python
Python3如何解决字符编码问题详解
2017/04/23 Python
fastcgi文件读取漏洞之python扫描脚本
2017/04/23 Python
Python数据类型中的“冒号“[::]——分片与步长操作示例
2018/01/24 Python
Python协程操作之gevent(yield阻塞,greenlet),协程实现多任务(有规律的交替协作执行)用法详解
2019/10/14 Python
python爬虫添加请求头代码实例
2019/12/28 Python
美国内衣品牌:Leonisa
2016/08/14 全球购物
元旦红领巾广播稿
2014/02/19 职场文书
法定代表人授权委托书
2014/04/04 职场文书
低碳环保口号
2014/06/12 职场文书
Python中可变和不可变对象的深入讲解
2021/08/02 Python
js前端图片加载异常兜底方案
2022/06/21 Javascript