Spring Cloud Netflix Zuul大文件上传

时间:2018-03-16 09:33:31

标签: spring-boot spring-cloud netflix-zuul

我正在使用Spring Boot进行项目,并且我试图上传大文件但不知何故它无法正常工作。

我在端口8080上运行Spring Boot + Zuul(@EnableZuulProxy),然后是另一个应该处理上传的微服务(让我们称之为数据存储)。

我将多部分请求发布到http://localhost:8080/zuul/my/upload/endpoint,其中包含文件和文本字符串。

当我上传100MB的文件时,一切正常。 Zuul将请求传递给数据存储区,请求进入并存储。 但是当我尝试上传一个更大的文件(150MB)时,Zuul处理请求并将其传递给数据存储区,但随后在某个地方从请求中剥离了一个多部分参数,然后数据存储区错误返回400并说“必需”请求部分'字符串'不存在'。

我在微服务(zuul和数据存储区)

中都有以下配置
/* Load PDF-Plugin */
Plugin::load('CakePdf', ['bootstrap' => true]);

Configure::write('CakePdf', [
    'engine' => [
        'className' => 'CakePdf.Dompdf',
                'margin' => [
                'bottom' => 15,
                'left' => 25,
                'right' => 15,
                'top' => 15
            ],
            'orientation' => 'potrait',
            'download' => false,
        'options' => [
            'print-media-type' => false,
            'outline' => true,
            'dpi' => 96
        ]
    ],
    'pageSize' => 'A4',
]);
define('DOMPDF_ENABLE_AUTOLOAD', false);
define('DOMPDF_ENABLE_HTML5PARSER', true);
define('DOMPDF_ENABLE_REMOTE', true);

有谁知道如何解决这个问题?我尝试过添加CommonsMultipartResolver,但这并没有改变任何内容。

1 个答案:

答案 0 :(得分:2)

您应该使用 servlet ,而不是 http

在我的Zuul application.yml中,以下属性起作用:

spring:
  http:  
    multipart:
      max-file-size: 1000MB
      max-request-size: 1000MB

在Spring boot 2中,以下属性起作用:

spring:
  servlet:
    multipart:
      max-file-size: 1000MB
      max-request-size: 1000MB

此处说明了属性:

{
   "name": "spring.http.multipart.max-file-size",
   "type": "java.lang.String",
   "description": "Max file size. Values can use the suffixes \"MB\" or \"KB\" to indicate megabytes or\n kilobytes respectively.",
   "sourceType": 
   "org.springframework.boot.autoconfigure.web.MultipartProperties",
   "defaultValue": "1MB"
},
{
   "name": "spring.http.multipart.max-request-size",
   "type": "java.lang.String",
   "description": "Max request size. Values can use the suffixes \"MB\" or \"KB\" to indicate megabytes or\n kilobytes respectively.",
   "sourceType": 
   "org.springframework.boot.autoconfigure.web.MultipartProperties",
   "defaultValue": "10MB"
},