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
浅谈@Value和@Bean的执行顺序问题
Jun 16 Java/Android
Java新手教程之ArrayList的基本使用
Jun 20 Java/Android
SpringCloud之@FeignClient()注解的使用方式
Sep 25 Java/Android
Spring this调用当前类方法无法拦截的示例代码
Mar 20 Java/Android
Java字符串逆序方法详情
Mar 21 Java/Android
MybatisPlus EntityWrapper如何自定义SQL
Mar 22 Java/Android
Java 垃圾回收超详细讲解记忆集和卡表
Apr 08 Java/Android
MyBatis核心源码深度剖析SQL语句执行过程
May 20 Java/Android
springboot 全局异常处理和统一响应对象的处理方式
Jun 28 Java/Android
Java多线程并发FutureTask使用详解
Jun 28 Java/Android
Java实现超大Excel文件解析(XSSF,SXSSF,easyExcel)
Jul 15 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
多文件上传的例子
2006/10/09 PHP
php函数之子字符串替换 str_replace
2011/03/23 PHP
PHP 调试工具Debug Tools
2011/04/30 PHP
使用PHP获取汉字的拼音(全部与首字母)
2013/06/27 PHP
php+js iframe实现上传头像界面无跳转
2014/04/29 PHP
php5.3以后的版本连接sqlserver2000的方法
2014/07/28 PHP
PHP框架性能测试报告
2016/05/08 PHP
event.srcElement+表格应用
2006/08/29 Javascript
跨浏览器的设置innerHTML方法
2006/09/18 Javascript
jQuery ReferenceError: $ is not defined 错误的处理办法
2013/05/10 Javascript
JS获得URL超链接的参数值实例代码
2013/06/21 Javascript
javascript date格式化示例
2013/09/25 Javascript
JS简单实现文件上传实例代码(无需插件)
2013/11/15 Javascript
js鼠标悬浮出现遮罩层的方法
2015/01/28 Javascript
js控制页面的全屏展示和退出全屏显示的方法
2015/03/10 Javascript
javascript适合移动端的日期时间拾取器
2015/11/10 Javascript
全面解析Bootstrap图片轮播效果
2015/12/03 Javascript
jquery 标签 隔若干行加空白或者加虚线的方法
2016/12/07 Javascript
小程序api实现promise封装过程解析
2019/11/21 Javascript
vue 监听窗口变化对页面部分元素重新渲染操作
2020/07/28 Javascript
python调用cmd命令行制作刷博器
2014/01/13 Python
Python中unittest用法实例
2014/09/25 Python
学习python类方法与对象方法
2016/03/15 Python
发布你的Python模块详解
2016/09/15 Python
Python温度转换实例分析
2018/01/17 Python
Python闭包之返回函数的函数用法示例
2018/01/27 Python
Python实现上下班抢个顺风单脚本
2018/02/07 Python
深入了解python中元类的相关知识
2019/08/29 Python
keras中的History对象用法
2020/06/19 Python
PyCharm上安装Package的实现(以pandas为例)
2020/09/18 Python
联谊会主持词
2014/03/26 职场文书
建设工地安全标语
2014/06/07 职场文书
乡镇群众路线专项整治方案
2014/11/03 职场文书
2014年政教处工作总结
2014/12/20 职场文书
React实现动效弹窗组件
2021/06/21 Javascript
Python Matplotlib库实现画局部图
2021/11/17 Python