zoukankan      html  css  js  c++  java
  • Spring Boot报错 MultipartException The temporary upload... (转)

    Spring Boot报错:尤其是在处理Ribbon这类接口调用型的负载均衡组件,常见问题

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    ERROR o.a.c.c.C.[.[.[.[dispatcherServlet] - Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is org.springframework.web.multipart.MultipartException: Could not parse multipart servlet request; nested exception is java.io.IOException: The temporary upload location [/tmp/tomcat.1222167204409692266.8781/work/Tomcat/localhost/ROOT] is not valid] with root cause
    java.io.IOException: The temporary upload location [/tmp/tomcat.1222167204409692266.8781/work/Tomcat/localhost/ROOT] is not valid
            at org.apache.catalina.connector.Request.parseParts(Request.java:2877)
            at org.apache.catalina.connector.Request.parseParameters(Request.java:3242)
            at org.apache.catalina.connector.Request.getParameter(Request.java:1136)
            at org.apache.catalina.connector.RequestFacade.getParameter(RequestFacade.java:381)
            at org.springframework.web.filter.HiddenHttpMethodFilter.doFilterInternal(HiddenHttpMethodFilter.java:84)
            at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
            at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
            at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
            at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:197)
            at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
            at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
            at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
            at org.springframework.boot.actuate.autoconfigure.MetricsFilter.doFilterInternal(MetricsFilter.java:103)
            at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
            at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
            at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
            at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:198)
            at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96)
            at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:493)
            at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:140)
            at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:81)
            at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:87)
            at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:342)
            at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:800)
            at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)
            at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:806)
            at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1498)
            at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
            at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
            at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
            at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
            at java.lang.Thread.run(Thread.java:748) 

     原因有二:

    • The http POST methods will use these temp location to store the post data.
    • http post接口请求参数需要保存到服务器临时路径
    • Some OS like centOS will delete the temp dir frequently. SO even you set that location's permission, after some time, that dir will be removed by OS. And after you reboot, the temp dir will be different.
    • 常用的云服务器如centOS,定期会删除这些临时路径,且每次重启路径不同.因此,需指定临时保存路径

      处理如下:

    spring:
      # post 接口 临时目录设置,避免被操作系统清除
      http:
        multipart:
          location: /data/upload_tmp
  • 相关阅读:
    google protobuf ios开发使用
    iOS下载使用系统字体
    xcode7 打开工程错误 This Document requires xcode8.0 or later.
    mac 文本编辑器 文本编码Unicode utf-8 不适用的问题
    iOS中JS 与OC的交互(JavaScriptCore.framework)
    cookie 设置报错 setcookie() expects parameter 3 to be integer, float given in...
    wordpress 获取指定作者或者文章的所有评论数量
    HTML a标签链接 设置点击下载文件
    PHPUnit 单元测试教程
    phpstudy 首次安装后打开网站 数据库内容 中文乱码
  • 原文地址:https://www.cnblogs.com/xiaohanlin/p/12618242.html
Copyright © 2011-2022 走看看