java临时目录找不到问题分析及解决过程

 更新时间:2025年11月18日 09:13:34   作者:骑猪少年  
文章主要内容是关于解决Java项目中临时目录找不到的问题,提供了两种解决方案:在配置文件中设置临时目录路径或在启动脚本中指定临时目录,这两种方法都能避免系统自动删除临时目录导致的文件上传错误

java临时目录找不到问题解决

报错示例

org.springframework.web.multipart.MultipartException: Could not parse multipart servlet
request;nested exception is java.io.IOException: The temporary upload location
[/tmp/tomcat.1337767218595042057.80/work/Tomcat/localhost/ROOT] is not valid
org.springframework.web.multipart.support.StandardMultipartHttpServletRequest.parseRequest(StandardMultipart
HttpServletRequest.java:112) org.springframework.web.multipart.support.StandardMultipartHttpServletRequest.

报错原因

java项目启动时,会在系统中创建一个临时目录,

  • 在windows中为
C:\Users\用户名\AppData\Local\Temp\
  • 在linux中为
/tmp

此目录,在未使用10天后将被系统删除(如10天内没有任何文件上传)

文件上传过程中,所有文件会临时保存在此目录中,当需要处理时会从此目录中读取

若此文件夹或文件不存在会报以上错误,一般将项目关闭重新启动即可解决,但是只是临时解决,在此给出两个解决方案:

注意:两方案二选一,全部选择有可能导致系统无法启动

方案一:

一般用于接触不到服务器或对linux命令不熟悉的开发者

首先在yml配置文件中添加multipart.location目录地址:

spring:
  servlet:
    multipart:
      # 指定自定义上传目录
      location: /mnt/tmp

然后添加config配置文件:

@Configuration
public class MultipartConfig {

    @Value("${spring.servlet.multipart.location}")
    private String fileTempDir;

    @Bean
    MultipartConfigElement multipartConfigElement() {
        String os = System.getProperty("os.name");
        // 兼容windows
        if(os.toLowerCase().startsWith("win")){
            fileTempDir = "C:" + fileTempDir;
        }
        log.info("fileTempDir:{}", fileTempDir);
        MultipartConfigFactory factory = new MultipartConfigFactory();
        File tmpDirFile = new File(fileTempDir);
        // 判断文件夹是否存在
        if (!tmpDirFile.exists()) {
            //创建文件夹
            boolean mkdirSuccess = tmpDirFile.mkdirs();
            log.info("create temp dir,result:{}", mkdirSuccess);
        }
        factory.setLocation(fileTempDir);
        return factory.createMultipartConfig();
    }
}

配置测试:

在项目启动日志中寻找:

 com.xx.config.MultipartConfig - fileTempDir:C:/mnt/tmp

代表配置成功

方案二:

在项目启动脚本或启动命令中加入以下命令

-Djava.io.tmpdir=/mnt/temp

总结

1.切记两方案选其一

2.以上方案实行后,可查看设定的目录是否自动创建成功,若目录找不到或不存在,可详细检查配置信息,确保项目信息无误可手动创建目录

3.两者原理相同,都是配置了文件的临时存储目录,此目录和其他系统目录一致,属于用户自己控制,不会因特殊原因被系统删除,此乃长久之计

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

相关文章

  • Java的后台文件夹下文件的遍历完整代码

    Java的后台文件夹下文件的遍历完整代码

    这篇文章主要介绍了Java的后台文件夹下文件的遍历完整代码,首先分享了java中遍历一个文件夹里边的所有文件,然后介绍了用Java遍历一个文件夹并获取它里面的所有内容详细代码,具有一定借鉴价值,需要的朋友可以参考下。
    2017-12-12
  • java将String字符串转换为List<Long>类型实例方法

    java将String字符串转换为List<Long>类型实例方法

    在本篇文章里小编给大家整理的是关于java将String字符串转换为List<Long>类型实例方法,需要的朋友们可以参考下。
    2020-03-03
  • mybatis-plus getOne和逻辑删除问题详解

    mybatis-plus getOne和逻辑删除问题详解

    这篇文章主要介绍了mybatis-plus getOne和逻辑删除,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-08-08
  • Springboot文件上传功能的实现

    Springboot文件上传功能的实现

    这篇文章主要介绍了SpringBoot文件上传功能的实现,文中通过代码示例介绍的非常详细,具有一定的参考学习价值,需要的朋友们可以参考阅读
    2023-04-04
  • Java枚举类型深度详解

    Java枚举类型深度详解

    Java的枚举类型(enum)是一种强大的工具,它不仅可以让你的代码更简洁、可读,而且通过类型安全、常量集合、方法重写和接口实现等特性,使得枚举在很多场景下都非常有用,本文给大家介绍Java枚举类型详解,感兴趣的朋友跟随小编一起看看吧
    2025-11-11
  • 解决idea中svn提交时performing vcs refresh时间很长的问题

    解决idea中svn提交时performing vcs refresh时间很长的问题

    这篇文章主要介绍了解决idea中svn提交时performing vcs refresh时间很长的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-09-09
  • java排序算法图文详解

    java排序算法图文详解

    这篇文章主要为大家详细介绍了Java经典排序算法之归并排序,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望可以对你有所帮助
    2021-07-07
  • java中SimpleDateFormat 的多线程安全问题

    java中SimpleDateFormat 的多线程安全问题

    本文主要介绍了java中SimpleDateFormat 的多线程安全问题,包括其内部可变状态和竞争条件,文章提供了四种解决方案,下面就来详细的介绍一下
    2026-02-02
  • Spring MVC+FastJson+hibernate-validator整合的完整实例教程

    Spring MVC+FastJson+hibernate-validator整合的完整实例教程

    这篇文章主要给大家介绍了关于Spring MVC+FastJson+hibernate-validator整合的完整实例教程,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧。
    2018-04-04
  • springboot 在idea中实现热部署的方法

    springboot 在idea中实现热部署的方法

    这篇文章主要介绍了springboot 在idea中实现热部署的方法,实现了热部署,在每一次作了修改之后,都会自动的重启,非常节约时间,感兴趣的小伙伴们可以参考一下
    2018-10-10

最新评论