上犹电脑信息网我们一直在努力
您的位置:上犹电脑信息网 > 文件问题 > Springboot入坑系列:文件上传失败,找不到.tmp临时文件-tmp是什么文件

Springboot入坑系列:文件上传失败,找不到.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配置临时目录

Springboot入坑系列:文件上传失败,找不到.tmp临时文件

yml配置文件上传临时目录

server:

port: 19990

context-path: /appName

tomcat:

basedir: /app/xxx/uploadtmp

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

Springboot入坑系列:文件上传失败,找不到.tmp临时文件

总结

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

相关阅读

  • Windows7如何添加超级终端-超级终端设置

  • 上犹设置问题
  • 超级终端设置,超级终端是一款通用的串行交互软件,可以通过超级终端与许多嵌入式应用的系统进行连接显示设置。更新到Windows 7,似乎就找不到相应的超级终端软件了。这时我们可以
关键词不能为空
极力推荐

电脑蓝屏_电脑怎么了_win7问题_win10问题_设置问题_文件问题_上犹电脑信息网

关于我们