springboot-multipart上传文件报错-The temporary upload location...is not valid

问题

postman调用上传文件接口返回报错

{
    "timestamp": 1594206820175,
    "status": 500,
    "error": "Internal Server Error",
    "exception": "org.springframework.web.multipart.MultipartException",
    "message": "Could not parse multipart servlet request; nested exception is java.io.IOException: The temporary upload location [/tmp/tomcat.4181869668815169714.8023/work/Tomcat/localhost/ROOT] is not valid",
    "path": "/**/*/**/***"
}

核心信息

Could not parse multipart servlet request; nested exception is java.io.IOException: The temporary upload location [/tmp/tomcat.4181869668815169714.8023/work/Tomcat/localhost/ROOT] is not valid

原因

http POST请求需要使用临时目录来存储post数据,上传的文件被接收后,也被临时存放在这个/tmp/目录下;
对于一些OS系统,像centOS将经常自动删除这个临时目录,所有导致该目录不存在了

解决方案

方案1
重启服务,让系统重新生成该目录 ;(我本地调试出现该问题时使用了这种)

方案2
手动创建该目录;

方案3
自定义目录,可以通过下面三种方式:
1、在application.yml文件中设置multipart location ,并重启项目

spring:
  http:
    multipart:
      location: /data/upload_tmp

2、添加启动参数 -java.tmp.dir=/path/to/application/temp/,并重启

3、在代码中增加系统默认目录配置 ,如下:

@Bean
MultipartConfigElement multipartConfigElement() {
MultipartConfigFactory factory = new MultipartConfigFactory();
factory.setLocation("/app/tmp");
return factory.createMultipartConfig();
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值