tmp文件怎么产生的(tmp文件删除方法)

背景介绍

本人前阵子接了部门的一个小需求,公司新成立一个子公司,有个门户网站需要java服务端支持一下,老大找打我,让我花两天时间搞定它。我找运营了解了下需求发现简单不能再简单,让我搞毕业大学生就饿能做的事,不爽(但是事还得做啊),了解到springboot近两年很火(ps:项目原因之前没用过springboot),于是打算用springboot来做。

花了一上午时间简单了解了下,别说搞个web项目是真快,遂一鼓作气一下午搞定了所有需求,加了个班自测也过了(有别的棘手的事要忙,所以不能在这耽搁时间),觉得还可以,于是直接写了文档给前端了。

没过多久,前端也完成,测试ok,上线了。

祸从天降

直到上周五,我被拉到一个wx群说文件上传异常了,卧槽lz一脸懵逼,不是测试ok了吗?神马情况,我当时的第一反应:shit,掉坑里了。于是我找运维小哥哥要了权限上去看了日志,报错日志大概长这样子:

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

认真看了下,还真不知道这说的啥玩意! 也不想多浪费时间,于是google,了解到原因大致如下:在linux系统中,springboot应用服务再启动(java -jar 命令启动服务)的时候,会在操作系统的/tmp目录下生成一个tomcat*的文件目录,上传的文件先要转换成临时文件保存在这个文件夹下面。由于临时/tmp目录下的文件,在长时间(10天)没有使用的情况下,就会被系统机制自动删除掉。所以如果系统长时间无人问津的话,就可能导致上面这个问题。

这下原因明白了,要我说这springboot也是有病,开发加测试也没到10天,10天内根本测不出来问题,可能这货有个好爸爸Spring吧。

既然出问题了,总要解决的,下面提供两种方法,亲测有效。

手动注入一个Bean,并配置临时目录@Bean
MultipartConfigElement multipartConfigElement() {
MultipartConfigFactory factory = new MultipartConfigFactory();
factory.setLocation(\”/app/xxx/uploadtmp\”);
return factory.createMultipartConfig();
}

而我则采用下面这种方式,方便快捷

yml配置临时目录

tmp文件怎么产生的(tmp文件删除方法)

yml配置文件上传临时目录

server:

port: 19990

context-path: /appName

tomcat:

basedir: /app/xxx/uploadtmp

以上两种方式配置后,都会在/app/xxx/uploadtmp目录下生成一堆文件,如下所示:

tmp文件怎么产生的(tmp文件删除方法)

总结

springboot是很方便开发,但还是有一些小缺陷的,想着以后会跟springboot多打交道,还是把使用springboot途中掉过的坑给罗列下来,希望大家能安全避开这些坑。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 8838832@qq.com 举报,一经查实,本站将立刻删除。文章链接:https://www.wllpr.com/116020.html

发表评论

登录后才能评论