zoukankan      html  css  js  c++  java
  • 解决springBoot上传大文件异常问题

    上传文件过大时的报错:

    org.springframework.web.multipart.MaxUploadSizeExceededException: Maximum upload size exceeded; nested exception is java.lang.IllegalStateException: org.apache.tomcat.util.http.fileupload.impl.SizeLimitExceededException: the request was rejected because its size (70179886) exceeds the configured maximum (10485760)
        at org.springframework.web.multipart.support.StandardMultipartHttpServletRequest.handleParseFailure(StandardMultipartHttpServletRequest.java:122)
        at org.springframework.web.multipart.support.StandardMultipartHttpServletRequest.parseRequest(StandardMultipartHttpServletRequest.java:115)
        at org.springframework.web.multipart.support.StandardMultipartHttpServletRequest.<init>(StandardMultipartHttpServletRequest.java:88)
        at org.springframework.web.multipart.support.StandardServletMultipartResolver.resolveMultipart(StandardServletMultipartResolver.java:87)
        at org.springframework.web.servlet.DispatcherServlet.checkMultipart(DispatcherServlet.java:1178)
        at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1012)
        at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:943)
        at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006)
        at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:909)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:652)
        at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:733)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)

    尝试解决

    第一种可能性:spring本身的限制,需要进行设置,如下代码1(yml文件)代码2(properties文件),代码2未尝试,因为我用的是yml文件。

    代码1

    spring:
      servlet:
        multipart:
          max-file-size: 251658240
    spring.servlet.multipart.max-file-size=500MB
    spring.servlet.multipart.max-request-size=500MB

    第二种可能性:tomcat对上传文件有限制,设置如下代码,将该属性设置为-1即可

    server:
        max-http-form-post-size: -1

    第三种可能性:查看Nginx 是否有限制请求数据大小,未用到,未测试,仅记录。client_max_body_size 500M;必须打开,放开限制

    server {
            listen       80;
            #server_name  localhost;
            client_max_body_size 500M;
     
            #charset koi8-r;
     
            #access_log  logs/host.access.log  main;
     
        location /test/ {
            proxy_pass   http://127.0.0.1:8080/test/;
            }
    }

     最终成功的是第一种尝试,不过给定的参数需要是负一

     #文件大小 MB必须大写
     #  maxFileSize 是单个文件大小
     #  maxRequestSize是设置总上传的数据大小
     spring:
       servlet:
         multipart:
           enabled: true
           max-file-size: -1
           max-request-size: -1

    原因如下,通过查找源码所知

     翻译如下:

    返回完整HTTP请求的最大大小。如果HTTP请求超出此值,则会抛出{@link SizeLimitExceededException} *。 *默认情况下,此值将从{@link FileUploadBase#getSizeMax()* FileUploadBase}对象复制,但是,用户可以通过调用{@link #setSizeMax(long)}将默认值替换为*请求特定值在这个对象上。 * <em>注意:</ em>仅在尚未初始化迭代器的情况下,才可以设置此对象的最大大小。换句话说:如果尚未调用方法{@link #hasNext()},{@ link #next()}。 * @param pSizeMax整个HTTP请求的最大大小。值-1表示“无限制”。

    重点是最后一句话,@param pSizeMax整个HTTP请求的最大大小。值-1表示“无限制”

    但是为什么直接设置大小不起作用的原因还有待查找。

  • 相关阅读:
    mouse_event模拟鼠标滚轮
    润乾报表配置技术路线
    建筑 物件 开心背单词 读句子,单词,字母,看图例, 翻译,看动画
    文字过渡动画,曲线过渡动画,,使用这个插件assign shape keys
    运动锻炼 开心背单词 读句子,单词,字母,看图例, 翻译,看动画,学英语,轻松背单词,简单背单词
    blender293 内置插件 精度绘画控件,PDT学习003,pdt tangents 切线
    日常用品 背单词 读句子 看图片 读单词 读字母 翻译, 看动画 学英语
    blender293 内置插件 精度绘画控件,PDT学习 precision drawing tools
    乔布斯 背单词 02 读句子 单词 字母 翻译,看动画 学英语 名言 我菜顾我在,我菜故我在,blender加python
    狐狸 和 乌鸦 英语 朗读句子 背单词
  • 原文地址:https://www.cnblogs.com/qcq0703/p/14250703.html
Copyright © 2011-2022 走看看