Failed to parse multipart servlet request nested exception is java.io.IOException

  • Post author:
  • Post category:java




bug重现

发送post 请求 上传文件,接口返回了错误信息。

在这里插入图片描述



解决与分析

很明显从错误的信息里可以看出,是指定的目录 已经无效了。后来我登录到部署的Linux 服务器上查看,的确 目录不存在了。

出现这种错误主要是因为 :

  1. 使用HTTP POST 请求,需要建立一个临时的文件目录(比如这里的【/tmp/tomcat.4124735587175…/work/Tomcat/localhost/…】)来存储POST表单里的数据
  2. 这个临时的文件呢,是挂在在Linux 根目录下的tmp 下 ,而且这个临时文件如果长时间没有被访问,是会被系统给清理掉的。
  3. 项目每次启动一次,会产生新的临时文件。比如重启后产生的文件夹如下
    在这里插入图片描述

解决办法:

  1. 直接重启项目,产生新的临时文件夹;
  2. 配置项目的application.yml 文件,指定临时文件夹的路径。然后还是要重启项目;
spring:
    http:
        multipart:
          location: /data/xxx_tmp



版权声明:本文为u014240299原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。