通过Zuul上传大文件

我在通过zuul上传大文件时遇到了问题。我正在使用apache-

commons文件上载(https://commons.apache.org/proper/commons-

fileupload/)来流式传输大文件,以及在前面使用zuul。在我的Spring

Boot应用程序中,我禁用了Spring提供的上传功能,以使用apache commons中的上传功能:

  spring:

http:

multipart:

enabled: false

控制器看起来像这样:

public ResponseEntity insertFile(@PathVariable Long profileId, 

HttpServletRequest request) throws Exception {

ServletFileUpload upload = new ServletFileUpload();

FileItemIterator uploadItemIterator = upload.getItemIterator(request);

if (!uploadItemIterator.hasNext()) {

throw new FileUploadException("FileItemIterator was empty");

}

while (uploadItemIterator.hasNext()) {

FileItemStream fileItemStream = uploadItemIterator.next();

if (fileItemStream.isFormField()) {

continue;

}

//do stuff

}

return new ResponseEntity(HttpStatus.OK);

}

如果我直接(没有zuul)访问我的应用程序,则文件上传将按预期工作。但是,如果通过zuul访问它,则FileItemIterator没有要遍历的项目,并且请求立即完成并显示错误(ERR_CONNECTION_RESET)。对于zuul,我还禁用了Spring提供的multipart。否则,它将起作用。但是,不会流式传输文件。它们只有在我进入控制器后才被完全加载(常规的Spring行为)。有没有办法在zuul中使用apache-

commons流选项?

回答:

我找到了解决方案。基本描述如下:

http://cloud.spring.io/spring-cloud-static/spring-

cloud.html#_uploading_files_through_zuul

我做了什么使它工作。只需一步一步:

  1. 为了绕过Spring DispatcherServlet,我更改了URL:

来自: http:// localhost:8081 / MyService /

file

到: http:// localhost:8081 / zuul / MyService /

file

  1. 保留禁用Spring分段上传的功能:
    spring:

    http:

    multipart:

    enabled: false

以下标头不是必需的。传输编码:分块

我试图上传一个没有该文件的大文件,这很好。

以上是 通过Zuul上传大文件 的全部内容, 来源链接: utcz.com/qa/430153.html

回到顶部