通过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
我做了什么使它工作。只需一步一步:
- 为了绕过Spring DispatcherServlet,我更改了URL:
来自: http:// localhost:8081 / MyService /
file
到: http:// localhost:8081 / zuul / MyService /
file
- 保留禁用Spring分段上传的功能:
spring:
http:
multipart:
enabled: false
以下标头不是必需的。传输编码:分块
我试图上传一个没有该文件的大文件,这很好。
以上是 通过Zuul上传大文件 的全部内容, 来源链接: utcz.com/qa/430153.html