侧边栏壁纸
  • 累计撰写 8 篇文章
  • 累计创建 10 个标签
  • 累计收到 1 条评论

BUG记录——The temporary upload location xx is not valid

神舟一号
2022-02-10 / 0 评论 / 1 点赞 / 509 阅读 / 741 字 / 正在检测是否收录...
温馨提示:
本文最后更新于 2022-02-10,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

背景

在用户使用导入excel文件的时候,生产环境突然报Failed to parse multipart servlet request; nested exception is java.io.IOException: The temporary upload location [/tmp/tomcat.1867764691194364960.8045/work/Tomcat/localhost/rpay] is not valid这个错误,很显然,是因为服务器的指定目录不存在导致的,需要立即紧急给客户解决。

原因分析

是因为springboot的应用内置了tomcat,在进行文件上传的时候,会先将文件存到服务器的临时目录,这个临时目录也是在服务启动的时候的创建的;但是,linux会定期清除未使用的临时文件(自动删除tmp目录下10天内未被访问的文件和文件夹),所以原因找到了,就是这个文件夹被删除了。

解决方式

方法一(临时方案,紧急情况比较推荐)

由于是线上生产环境,而且紧急性比较高,所以需要采用一种直接快捷的有效办法——在服务器上面重新建立被删除的文件夹即可。

方法二(临时方案)

重新启动,如果项目重新启动,那么对应的tomcat的临时文件夹就会被重新创建,自然就不会存在找不到上传目录的情况了。但是重新建的文件夹还是会默认的在tmp下面,长时间不被访问的话,还是会存在上述问题,所以这个方案只是个临时方案。

方法三(非紧急情况下推荐)

tmp下面创建的文件夹会被定期清除,那么我们不创建在tmp目录下就可以了,只需要在项目的配置文件指定即可。

# 指定上传文件的临时目录,避免放到linux默认的tmp文件夹下,被定期清理,导致上传失败
server:
  tomcat:
    basedir: /home/tomcat/temp
1

评论区