springboot临时文件存储目录配置方式

 更新时间:2021年07月01日 11:41:51   作者:programmeryu  
这篇文章主要介绍了springboot临时文件存储目录配置方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

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();
   }
}

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • spring aop实现用户权限管理的示例

    spring aop实现用户权限管理的示例

    本篇文章主要介绍了spring aop实现用户权限管理的示例,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-12-12
  • 彻底解决tomcat中文乱码问题方案

    彻底解决tomcat中文乱码问题方案

    这篇文章主要介绍了彻底解决tomcat中文乱码问题方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-11-11
  • Spring Boot集成Milvus快速入门demo示例详解

    Spring Boot集成Milvus快速入门demo示例详解

    Milvus是一种高性能向量数据库,支持从笔记本到大型分布式系统的多环境运行,它以开源和云服务形式提供,是LFAI & Data Foundation的项目,采用Apache 2.0许可,Milvus特别支持高并行化和解耦的系统架构,使其能够随数据增长而扩展,支持各种复杂搜索功能,满足企业级AI应用需求
    2024-09-09
  • Lucene源码系列多值编码压缩算法实例详解

    Lucene源码系列多值编码压缩算法实例详解

    这篇文章主要为大家介绍了Lucene源码系列多值编码压缩算法实例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-11-11
  • 在Ubuntu上部署SpringBoot应用的操作步骤

    在Ubuntu上部署SpringBoot应用的操作步骤

    随着云计算和容器化技术的普及,Linux 服务器已成为部署 Web 应用程序的主流平台之一,Java 作为一种跨平台的编程语言,具有广泛的应用场景,本文将详细介绍如何在 Ubuntu 服务器上部署 Java 应用,需要的朋友可以参考下
    2025-01-01
  • Spring单元测试控制Bean注入的方式

    Spring单元测试控制Bean注入的方式

    这篇文章主要介绍了Spring单元测试控制Bean注入的方式,其中续注意的是在Bean上加@Order(xxx)是无法控制bean注入的顺序的,需要的可以参考一下
    2023-04-04
  • MybatisPlus分页查询与多条件查询介绍及查询过程中空值问题的解决

    MybatisPlus分页查询与多条件查询介绍及查询过程中空值问题的解决

    mybatisplus是个很好用的插件,相信小伙伴们都知道,下面这篇文章主要给大家介绍了关于mybatis-plus实现分页查询与多条件查询介绍及查询过程中空值问题的相关资料,需要的朋友可以参考下
    2022-10-10
  • Java中的SynchronousQueue阻塞队列及使用场景解析

    Java中的SynchronousQueue阻塞队列及使用场景解析

    这篇文章主要介绍了Java中的SynchronousQueue阻塞队列及使用场景解析,SynchronousQueue 是 Java 中的一个特殊的阻塞队列,它的主要特点是它的容量为0,这意味着 SynchronousQueue不会存储任何元素,需要的朋友可以参考下
    2023-12-12
  • idea如何关闭右侧类显示方法

    idea如何关闭右侧类显示方法

    这篇文章主要介绍了idea如何关闭右侧类显示方法,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-07-07
  • 使用Java Collections实现集合排序的全面指南

    使用Java Collections实现集合排序的全面指南

    在Java编程中,集合(Collection)是处理数据的重要工具之一,Java集合框架提供了丰富的接口和类来操作数据集合,而排序是其中最常见的操作之一,本文将详细介绍如何使用Collections类对集合进行排序,并深入探讨其背后的原理和使用场景,需要的朋友可以参考下
    2025-02-02

最新评论