阅读 323

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

这篇文章主要介绍了SpringBoot上传临时文件被删除引起报错的解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

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

    1.前言

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

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

    详见如图

    image.png

    2.问题分析

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

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

    3.解决方案

    3.1重启项目

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

    3.2自定义临时文件路径

    新增如下配置

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

    注意事项:

    3.2新增配置

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

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

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

    • 需要重启项目生效 ;

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

    • hsperfdata_root

    • tomcat.************.8080,(结尾为端口)

    • tomcat-docbase.*********.8080 ;

    • 1.前言

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

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

      详见如图

      image.png

      2.问题分析

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

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

      3.解决方案

      3.1重启项目

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

      3.2自定义临时文件路径

      新增如下配置

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

      注意事项:

      3.2新增配置

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

      1
      @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.解决方法

      • 需要重启项目生效 ;

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

      • hsperfdata_root

      • tomcat.************.8080,(结尾为端口)

      • tomcat-docbase.*********.8080 ;

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

1.前言

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

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

详见如图

image.png

2.问题分析

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

  • hsperfdata_root

  • tomcat.************.8080,(结尾为端口)

  • tomcat-docbase.*********.8080 ;

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

3.解决方案

3.1重启项目

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

3.2自定义临时文件路径

新增如下配置

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


注意事项:

  • 需要重启项目生效 ;

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

3.2新增配置

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

1
@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。

1
server.tomcat.basedir=/tmp/tomcat

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

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

以上为个人经验,希望能给大家一个参考

原文链接:https://xqiangme.blog.csdn.net/article/details/103227572


文章分类
代码人生
版权声明:本站是系统测试站点,无实际运营。本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 XXXXXXo@163.com 举报,一经查实,本站将立刻删除。
相关推荐