美文网首页
springCloud负载均衡上传视频失败问题

springCloud负载均衡上传视频失败问题

作者: 莫夏_b560 | 来源:发表于2019-04-12 15:40 被阅读0次

    springCloud负载均衡上传视频失败问题
    项目框架 springcloud微服务 + docker环境部署。
    consul 用于服务注册和服务发现。
    zuul做网关分发,实现拦截请求做反向代理。
    ribbon工具restTemplate类来负载均衡。
    下面是若干个客户端微服务。

    但是在上传文件功能的时候就出现了问题,经过负载均衡器后,文件内容不能拿到,当时想的应该是restTemplate到客户端重定向的时候没把文件带过去。

    既然这样,那就需要我们重新设置就可以了,代码如下

    public String uploadCover(@RequestParam MultipartFile imageFile){
    
        String tempFileName = UUID.randomUUID() + imageFile.getOriginalFilename().substring(imageFile.getOriginalFilename().lastIndexOf("."));
        String tempFilePath = "/tmp/" + tempFileName;
        File tempFile = new File(tempFilePath);
    
        MultiValueMap<String,Object> requestEntity = new LinkedMultiValueMap<>();
        FileSystemResource resource = new FileSystemResource(tempFile);
        requestEntity.add("imageFile",resource);
        requestEntity.add("token", request.getParameter("token"));
        ResponseEntity<String> responseEntity = restTemplate.postForEntity("http://mission-customer-service/customer/publishManager/uploadCover", requestEntity, String.class);
        return responseEntity.getBody();
    }
    

    原理就是在负载均衡器先获取到文件,然后先设置一个路径,生成一个临时文件再new File重定向的时候带到客户端,重点的是类型要改成FileSystemResource。
    再测试一下,已经可以上传成功了。
    这里还有一个点要注意的,如果linnux下路径是没有权限的话,因为不能写临时文件就会报错。

    然后上传一个比较大的文件,会报文件大小超出,不应该啊,负载均衡器和网关已经加上了最大文件大小

    servlet:
      multipart:
        max-file-size: 100Mb
        max-request-size: 50Mb
        enabled: true
    

    找了半天,原来文件太大超时了。。但是错误提示还是跟文件大小限制一样。。
    网关加上超时时间就好了。

    zuul:
      max:
        host:
          connections: 500
      host:
        socket-timeout-millis: 60000
        connect-timeout-millis: 60000
    

    相关文章

      网友评论

          本文标题:springCloud负载均衡上传视频失败问题

          本文链接:https://www.haomeiwen.com/subject/onbcwqtx.html