我正在使用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,但这并没有改变任何内容。
答案 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"
},