SpringBoot上传临时文件被删除引起报错的解决

目录
  • 上传临时文件被删除引起报错的解决

    1.前言

    在项目中使用到了SpringBoot的上传实现了一个excel导入功能,上线后稳得一批,但突然有一天发现,导入失败报错:

    location [/tmp/tomcat.xxx.8551/work/Tomcat/localhost/ROOT] is not valid

    详见如图

    2.问题分析

    在SpringBoot项目启动后,系统会在‘/tmp'目录下自动的创建以下几个文件;

    • hsperfdata_root
    • tomcat.************.8080,(结尾为端口)
    • tomcat-docbase.*********.8080 ;

    程序对上传文件操作时,会生成临时文件,暂存在临时文件目录中,经查阅资料发现CentOS有自动清理规则,系统会对/tmp下10天未使用的文件进行清理,清理后再次使用文件上传就会出现以上问题 ;

    3.解决方案

    3.1重启项目

    启动时会自动新建临时目录的。但是以后依旧会有被系统自动清除的可能(未彻底解决)。

    3.2自定义临时文件路径

    新增如下配置

    server.tomcat.basedir=/home/dev/temp

    注意事项:

    • 需要重启项目生效 ;
    • 若启动项目的用户有权限在该目录下创建文件夹,则会自动创建 ;

    3.2新增配置

    配置类方式指定临时文件路径

    @Configurationpublic class MultipartConfig {    /**     * 文件上传临时路径     */    @Bean    MultipartConfigElement multipartConfigElement() {        MultipartConfigFactory factory = new MultipartConfigFactory();        String location = System.getProperty("user.dir") + "/dev/temp";        File tmpFile = new File(location);        if (!tmpFile.exists()) {            tmpFile.mkdirs();        }        factory.setLocation(location);        return factory.createMultipartConfig();    }}

    文件上传提示临时文件夹不存在

    • 1.前言

      在项目中使用到了SpringBoot的上传实现了一个excel导入功能,上线后稳得一批,但突然有一天发现,导入失败报错:

      location [/tmp/tomcat.xxx.8551/work/Tomcat/localhost/ROOT] is not valid

      详见如图

      2.问题分析

      在SpringBoot项目启动后,系统会在‘/tmp'目录下自动的创建以下几个文件;

      • hsperfdata_root
      • tomcat.************.8080,(结尾为端口)
      • tomcat-docbase.*********.8080 ;

      程序对上传文件操作时,会生成临时文件,暂存在临时文件目录中,经查阅资料发现CentOS有自动清理规则,系统会对/tmp下10天未使用的文件进行清理,清理后再次使用文件上传就会出现以上问题 ;

      3.解决方案

      3.1重启项目

      启动时会自动新建临时目录的。但是以后依旧会有被系统自动清除的可能(未彻底解决)。

      3.2自定义临时文件路径

      新增如下配置

      server.tomcat.basedir=/home/dev/temp

      注意事项:

      • 需要重启项目生效 ;
      • 若启动项目的用户有权限在该目录下创建文件夹,则会自动创建 ;

      3.2新增配置

      配置类方式指定临时文件路径

      @Configurationpublic class MultipartConfig {    /**     * 文件上传临时路径     */    @Bean    MultipartConfigElement multipartConfigElement() {        MultipartConfigFactory factory = new MultipartConfigFactory();        String location = System.getProperty("user.dir") + "/dev/temp";        File tmpFile = new File(location);        if (!tmpFile.exists()) {            tmpFile.mkdirs();        }        factory.setLocation(location);        return factory.createMultipartConfig();    }}

      文件上传提示临时文件夹不存在

      1.异常信息

      java.io.IOException: The temporary upload location [C:\Users\Administrator\AppData\Local\Temp\tomcat.1668302398522753093.8383\work\Tomcat\loca lhost\ROOT] is not valid

      2.原因

      文件上传临时上传文件夹失效了,可能是系统清除了临时目录。

      3.解决方法

上传临时文件被删除引起报错的解决

1.前言

在项目中使用到了SpringBoot的上传实现了一个excel导入功能,上线后稳得一批,但突然有一天发现,导入失败报错:

location [/tmp/tomcat.xxx.8551/work/Tomcat/localhost/ROOT] is not valid

详见如图

2.问题分析

在SpringBoot项目启动后,系统会在‘/tmp'目录下自动的创建以下几个文件;

  • hsperfdata_root
  • tomcat.************.8080,(结尾为端口)
  • tomcat-docbase.*********.8080 ;

程序对上传文件操作时,会生成临时文件,暂存在临时文件目录中,经查阅资料发现CentOS有自动清理规则,系统会对/tmp下10天未使用的文件进行清理,清理后再次使用文件上传就会出现以上问题 ;

3.解决方案

3.1重启项目

启动时会自动新建临时目录的。但是以后依旧会有被系统自动清除的可能(未彻底解决)。

3.2自定义临时文件路径

新增如下配置

server.tomcat.basedir=/home/dev/temp

注意事项:

  • 需要重启项目生效 ;
  • 若启动项目的用户有权限在该目录下创建文件夹,则会自动创建 ;

3.2新增配置

配置类方式指定临时文件路径

@Configurationpublic class MultipartConfig {    /**     * 文件上传临时路径     */    @Bean    MultipartConfigElement multipartConfigElement() {        MultipartConfigFactory factory = new MultipartConfigFactory();        String location = System.getProperty("user.dir") + "/dev/temp";        File tmpFile = new File(location);        if (!tmpFile.exists()) {            tmpFile.mkdirs();        }        factory.setLocation(location);        return factory.createMultipartConfig();    }}

文件上传提示临时文件夹不存在

1.异常信息

java.io.IOException: The temporary upload location [C:\Users\Administrator\AppData\Local\Temp\tomcat.1668302398522753093.8383\work\Tomcat\loca lhost\ROOT] is not valid

2.原因

文件上传临时上传文件夹失效了,可能是系统清除了临时目录。

3.解决方法

1.重启服务,不建议在生产环境使用。

2.增加服务配置,自定义baseDir。

server.tomcat.basedir=/tmp/tomcat

3.注入bean,手动配置临时目录,建议有项目组统一配置,便于管理和错误定位。

@Bean  MultipartConfigElement multipartConfigElement() {    MultipartConfigFactory factory = new MultipartConfigFactory();    factory.setLocation("/tmp/tomcat");    return factory.createMultipartConfig();  }

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

(0)

相关推荐

  • 解决SpringBoot文件上传临时目录找不到的问题

    SpringBoot文件上传临时目录问题 我相信大家在把项目部署到服务器上面时候都会遇到这样一个问题: org.springframework.web.multipart.MultipartException: Could not parse multipart servlet request;nested exception is java.io.IOException: The temporary upload location [/tmp/tomcat.133776721859504205

  • spring boot上传文件出错问题如何解决

    这篇文章主要介绍了spring boot上传文件出错问题如何解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 org.springframework.web.multipart.MultipartException: Could not parse multipart servlet request; nested exception is java.io.IOException: The temporary upload location

  • Spring Boot应用上传文件时报错的原因及解决方案

    问题描述 Spring Boot应用(使用默认的嵌入式Tomcat)在上传文件时,偶尔会出现上传失败的情况,后台报错日志信息如下:"The temporary upload location is not valid". 原因追踪 这个问题的根本原因是Tomcat的文件上传机制引起的! Tomcat在处理文件上传时,会将客户端上传的文件写入临时目录,这个临时目录默认在/tmp路径下,如:"/tmp/tomcat.6574404581312272268.18333/work/T

  • SpringBoot项目 文件上传临时目标被删除异常的处理方案

    1.业务背景 我们使用了SpringCloud 进行项目开发,其中一个主要服务(涉及到图片上传)的SpringBoot微服务在测试环境之中.因为此项目已经上线,很长一段时未针对此项目间做相关布更改和打包发. 由于最近此项目业务甲方需要新增部分功能.但是测试在上传课程时候,需要上传课程封面,发现上传课程封面的图片上传接口报错500啦. 本人在后端日志目录之中也无法查找到报错信息.仅仅只有前后端分离的前端调用接口的时候返回一个如下错误提示 Could not parse multipart serv

  • SpringBoot上传临时文件被删除引起报错的解决

    目录 上传临时文件被删除引起报错的解决 1.前言 在项目中使用到了SpringBoot的上传实现了一个excel导入功能,上线后稳得一批,但突然有一天发现,导入失败报错: location [/tmp/tomcat.xxx.8551/work/Tomcat/localhost/ROOT] is not valid 详见如图 2.问题分析 在SpringBoot项目启动后,系统会在'/tmp'目录下自动的创建以下几个文件; hsperfdata_root tomcat.************.8

  • idea springBoot项目自动注入mapper为空报错的解决方法

    在SpringBoot项目中,如果使用了MyBatis作为持久层框架,使用自动注入时可能会遇到mapper报空指针异常的问题.这是因为在自动注入时,SpringBoot无法正确识别MyBatis的Mapper接口,需要进行一些额外的配置.解决这个问题的方法有两种: 1.在Mapper接口上添加注解在Mapper接口上添加@Mapper注解,告诉SpringBoot这个接口是一个Mapper接口,需要进行代理.示例如下: @Mapper public interface UserMapper {

  • springboot配置mysql数据库spring.datasource.url报错的解决

    目录 springboot配置mysql数据库spring.datasource.url报错 springboot下datasource连接配置 基本设置 datasource JPA jooq h2 JTA springboot配置mysql数据库spring.datasource.url报错 spring.datasource.url=jdbc:mysql://abc:3306/abcd?useUnicode=true&characterEncoding=utf8 很常规地配置了这个mysq

  • springboot集成springCloud中gateway时启动报错的解决

    在项目中引入springcloud中的gateway时报以下错误 Description: Parameter 0 of method modifyRequestBodyGatewayFilterFactory in org.springframework.cloud.gateway.config.GatewayAutoConfiguration required a bean of type 'org.springframework.http.codec.ServerCodecConfigur

  • vue+springboot上传文件、图片、视频及回显到前端详解

    目录 效果图 设计逻辑 数据库表 前端vue html js代码 前端思路 储存文件信息 上传文件对象 后端上传下载代码 完整代码 workinfo.vue SubmitHomeworkController 总结 效果图 预览: 设计逻辑 数据库表 前端vue html <div class="right-pannel"> <div class="data-box"> <!--上传的作业--> <div style=&quo

  • java进阶解析Springboot上传excel存入数据库步骤

    目录 一.导入依赖 二.前端实现 三.后台逻辑 三.页面效果 四.可能会遇到的问题 一.导入依赖 这里还是用了Apache的POI插件,现在一般的springboot解析excel基本都用它 . <!-- 文件上传,解析文件需要的依赖--> <!--poi对excel2007以上版本的支持--> <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi-ooxml&l

  • Springboot上传文件时提示405问题及排坑过程

    目录 Springboot上传文件时提示405 解决方案1 解决方案2 Springboot使用过程中遇到的一些问题 异常一 异常二:Mysql连接报错 异常三:整合Druid密码解密失败 Springboot上传文件时提示405 问题描述:上传文件时请求不通,状态码返回405,如下图:  问题分析:405 Method Not Allowed,请求行中指定的请求方法不能被用于请求相应的资源.该响应必须返回一个Allow 头信息用以表示出当前资源能够接受的请求方法的列表.简单说就是请求方法不支持

  • 基于SpringBoot上传任意文件功能的实现

    一.pom文件依赖的添加 <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</gr

  • Java实现ftp上传下载、删除文件及在ftp服务器上传文件夹的方法

    一个JAVA 实现FTP功能的代码,包括了服务器的设置模块,并包括有上传文件至FTP的通用方法.下载文件的通用方法以及删除文件.在ftp服务器上传文件夹.检测文件夹是否存在等,里面的有些代码对编写JAVA文件上传或许有参考价值,Java FTP主文件代码: package ftpDemo; import java.io.DataOutputStream; import java.io.InputStream; import java.io.OutputStream; import sun.net

  • SpringBoot上传文件到本服务器 目录与jar包同级问题

    前言 看标题好像很简单的样子,但是针对使用jar包发布SpringBoot项目就不一样了. 当你使用tomcat发布项目的时候,上传文件存放会变得非常简单,因为你可以随意操作项目路径下的资源.但是当你使用SpringBoot的jar包发布项目的时候,你会发现,你不能像以前一样操作文件了.当你使用File file = new File()的时候根本不知道这个路径怎么办.而且总不能很小的项目也给它构建一个文件服务器吧.所以这次就来解决这样的问题. 不想知道细节的,可以直接跳转到最后封装的部分,里面

随机推荐