ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

springboot上传文件报临时文件找不到

2022-06-10 11:32:21  阅读:163  来源: 互联网

标签:tmp 文件目录 springboot tomcat factory 文件夹 import 临时文件 上传


异常信息

报错日志:

The temporary upload location

[/tmp/tomcat.7957874575370093230.8088/work/Tomcat/localhost/ROOT] is not valid

 

 

异常原因

在linux系统中,springboot应用服务再启动(java -jar 命令启动服务)的时候,会在操作系统的/tmp目录下生成一个tomcat*的文件目录,上传的文件先要转换成临时文件保存在这个文件夹下面。由于临时/tmp目录下的文件,10天就会被系统机制自动删除掉。所以会出现找不到该路径的异常

 

 

解决方式:

1、重启服务器,每次重启服务,tomcat会重新建立临时文件夹(不推荐)

2、在系统上手动添加对应的临时文件目录(不推荐,还是可能会被清理掉)

3、修改配置文件

在application.yml重新配置一个文件目录,然后重启项目(推荐,亲测有效)

# 存放Tomcat的日志、Dump等文件的临时文件夹,默认为系统的tmp文件夹

server.tomcat.basedir=/tmp/upload_file

servlet.multipart.location=/tmp/upload_file

4、修改配置类

 

import org.springframework.beans.factory.annotation.Value;

import org.springframework.boot.web.servlet.MultipartConfigFactory;

import org.springframework.context.annotation.Bean;

import org.springframework.context.annotation.Configuration;

 

import javax.servlet.MultipartConfigElement;

import java.io.File;

 

@Configuration

public class MultipartConfig {

@Value("${location.tempDir:/tmp/tomcat_upload}")

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

    }

}

 

异常信息

报错日志:

The temporary upload location

[/tmp/tomcat.7957874575370093230.8088/work/Tomcat/localhost/ROOT] is not valid

 

 

异常原因

在linux系统中,springboot应用服务再启动(java -jar 命令启动服务)的时候,会在操作系统的/tmp目录下生成一个tomcat*的文件目录,上传的文件先要转换成临时文件保存在这个文件夹下面。由于临时/tmp目录下的文件,10天就会被系统机制自动删除掉。所以会出现找不到该路径的异常

 

在Windows上临时路径会创建在

C:\Users\qjc\AppData\Local\Temp

 

PS:最后面的“.”后面跟的是对应项目的端口号

所以测试的时候,可以删除这个临时路径让异常复现,然后用下面的方式进行解决:

 

1. 临时解决方式:

可以重启服务,让springboot重新生成临时路径,当然,这个不可取,不建议再生产环境使用

2.修改配置文件

在application.yml重新配置一个文件目录,然后重启项目(推荐,亲测有效)

# 存放Tomcat的日志、Dump等文件的临时文件夹,默认为系统的tmp文件夹

server.tomcat.basedir=/data/apps/temp

 

3.修改配置类

配置类配置临时文件存储目录(测试无效,原因未知)

@Bean

    MultipartConfigElement multipartConfigElement() {

        MultipartConfigFactory factory = new MultipartConfigFactory();

        factory.setLocation(“/data/apps/temp”);

        return factory.createMultipartConfig();

    }

标签:tmp,文件目录,springboot,tomcat,factory,文件夹,import,临时文件,上传
来源: https://www.cnblogs.com/limeirong/p/16362601.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有