springboot设置临时目录(Springboot入坑系列文件上传失败)

背景介绍

本人前阵子接了部门的一个小需求,公司新成立一个子公司,有个门户网站需要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天)没有使用的情况下,就会被系统机制自动删除掉。所以如果系统长时间无人问津的话,就可能导致上面这个问题。

yml配置文件上传临时目录

server:

port: 19990

context-path: /appName

tomcat:

basedir: /app/xxx/uploadtmp

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

springboot设置临时目录(Springboot入坑系列文件上传失败)(1)

总结

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

,

免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com

    分享
    投诉
    首页