dve*_*opp 7 java spring apache-commons-fileupload spring-boot netflix-zuul
我在通过zuul上传大文件时遇到了问题.我正在使用apache-commons文件上传(https://commons.apache.org/proper/commons-fileupload/)来传输大文件以及我在前面使用zuul.在我的Spring Boot应用程序中,我禁用了Spring提供的上传来使用apache commons中的一个:
spring:
http:
multipart:
enabled: false
Run Code Online (Sandbox Code Playgroud)
控制器看起来像这样:
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);
}
Run Code Online (Sandbox Code Playgroud)
如果我直接访问我的应用程序(没有zuul),文件上传按预期工作.但是,如果通过zuul访问它,则FileItemIterator没有要遍历的项目,并且请求立即生成错误(ERR_CONNECTION_RESET).对于zuul,我也禁用了Spring给出的多部分.否则,它的工作原理.但是,文件未流式传输.只有在我进入控制器(常规的Spring行为)之后才会完全加载它们.有没有办法在zuul中使用apache-commons流选项?
我找到了解决方案.它基本上在这里描述:
http://cloud.spring.io/spring-cloud-static/spring-cloud.html#_uploading_files_through_zuul
我做了什么让它工作.一步一步:
来自: http:// localhost:8081/MyService/file
要: http:// localhost:8081/zuul/MyService/file
保留禁用Spring分段上传:
spring:
http:
multipart:
enabled: false
Run Code Online (Sandbox Code Playgroud)不需要以下标头.转移编码:分块
我尝试上传一个没有那个的大文件,这很好.
| 归档时间: |
|
| 查看次数: |
5821 次 |
| 最近记录: |