Spring Cloud Zuul文件上传

/ Spring Cloud / 没有评论 / 44浏览

介绍Spring Cloud Zuul代理微服务文件上传。

场景

在实际的应用中,我们采用Spring Cloud Zuul作为网关,代理微服务。那么进行文件上传时,发现上传大文件时会报错。

解决方案

下面是官网给出的解释:

If you @EnableZuulProxy you can use the proxy paths to upload files and it should just work as long as the files are small. For large files there is an alternative path which bypasses the Spring DispatcherServlet (to avoid multipart processing) in "/zuul/*".

意思是小文件可以直接代理,大文件则需要加前缀/zuul/*绕过DispatcherServlet

具体的微服务

@PostMapping("/fileUpload")
public String fileUpload(@RequestPart MultipartFile file) {
    LOG.debug("file: {}", file.getName());
    // 省略文件处理

    // 返回一些啥
    return file.getContentType();
}
spring:
  http:
    multipart:
      enabled: true
      max-file-size: 30MB
      max-request-size: 30MB

zuul网关配置

hystrix:
  command:
    defaul:
      execution:
        isolation:
          thread:
            timeoutInMilliseconds: 60000

ribbon:
  ConnectTimeout: 3000
  ReadTimeout: 60000

请求添加/zuul前缀

请求

其中:example-service是处理文件服务的微服务serviceId/fileUpload是微服务中的请求路径。

参考

spring cloud zuul文件上传官方参考文档