前端upload上传大文件(5M以上)到minio存储时候,10秒左右,主动断开,导致收不到路径

Saber 未结 4 2975
294604621
294604621 2021-03-15 15:11

一、该问题的重现步骤是什么?


    部署服务到 docker容器中,正常运行各个服务。

1. 外网访问项目,浏览器打开新增数据页面,上传文件,分别可以上传 小文件和大文件 查看返回情况,下面是上传大文件(视频10M左右)的情况

qq.png

2. 正常的小文件,是可以正常上传的



3.本地启动微服务,不管文件多大 都能正常上传



二、你期待的结果是什么?实际看到的又是什么?


        我期待的 是几十M的文件能够正常上传,实际是 上传大于2M左右以上的文件,就不能正常得到 上传后的 路径,  但是不管上传的文件 多大 ,minio中  是已经正常保存了  上传的文件。 

        下面是minio上传后文件:

            2.png

    


三、你正在使用的是什么产品,什么版本?在什么操作系统上?


        前端使用的是 Saber 。后端是Bladex 2.7,,运行在Linux  环境centos7 系统中,通过  docker 部署的


四、请提供详细的错误堆栈信息,这很重要。

        

        后端  docker   web-nginx打印的日志

        3.png


        Saber 网页上的  信息:

            6.png


            代码部分:

                后端:

                    QQ截图20210315152148.png

                Saber前端:

                
QQ截图20210315152309.png


五、若有更多详细信息,请在下面提供。




4条回答
  •  3395733618
    3395733618 (楼主)
    2021-03-15 17:35

    这个传文件是先传到 blade-resource微服务(java),然后再由微服务传到Minio。

    然后saber的设置中有超时时间,微服务也有自动熔断的时间,这样传文件。文件一大一定会超时报错。

    也不可能无限制的把超时时间拉长。


    所以如果你用minio的话,我建议使用如下方案:

    1. 先向微服务请求一个预签名上传文件url,同时服务端写库一条标记文件状态是“预签名未上传”,并把文件id、预签名上传文件url(presignedPutObjectUrl)一并返回

    2. 前端使用预签名上传文件url(presignedPutObjectUrl)直传minio

    3. 传完了,再调用一个验证接口;使用文件id,让微服务验证文件在minio中是否存在,如果存在,把文件表状态改为 “正常”

    我们公司目前正在用的是这个方案,可以供你参考

提交回复