错误Failed to parse multipart servlet request; nested exception is java.io.IOException: The temporary

1、原因分析

问题:开发中遇到一个springboot的异常,Failed to parse multipart servlet request; nested exception is java.io.IOException: The temporary upload location [/data/tmp],奇怪的是服务器上传没有任何问题,只有在我本地上传会报这个错

原因:从报错的信息来看是缺少 ‘/data/tmp’目录导致的

分析:因为我是mac电脑,没有权限在根目录下创建文件夹,所以会报这个错,而服务器上是root权限,可以自动去创建

2、解决方案

对此问题我也在网上找了几种方案:

2.1、增加配置文件指向临时目录

2.1.1、在application.yml文件中设置multipart location ,并重启项目

spring:
  servlet:
    multipart:
      location: /tmp/uploads

我看有的博客的配置是:

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

这个配置我使用了是没用的,因为application.yaml 中配置 Spring Boot 的 multipart 上传目录时,使用的是 spring.servlet.multipart.location。如果配置中是 spring.http.multipart.location,这会导致配置无法生效。

2.1.2 在application.yml文件中设置tomcat的临时文件目录

server
  tomcat:
     basedir: /tmp/tomcat

2.2 在配置文件添加bean

@Bean
public MultipartConfigElement multipartConfigElement() {
  MultipartConfigFactory factory = new MultipartConfigFactory();
  factory.setLocation("/tmp/tomcat");
  return factory.createMultipartConfig();
}

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

本人是用 2.1.1 方案解决的,因为可以在不改动代码以及启动配置文件实现。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值