一、该问题的重现步骤是什么?
部署服务到 docker容器中,正常运行各个服务。
1. 外网访问项目,浏览器打开新增数据页面,上传文件,分别可以上传 小文件和大文件 查看返回情况,下面是上传大文件(视频10M左右)的情况
2. 正常的小文件,是可以正常上传的
3.本地启动微服务,不管文件多大 都能正常上传
二、你期待的结果是什么?实际看到的又是什么?
我期待的 是几十M的文件能够正常上传,实际是 上传大于2M左右以上的文件,就不能正常得到 上传后的 路径, 但是不管上传的文件 多大 ,minio中 是已经正常保存了 上传的文件。
下面是minio上传后文件:
三、你正在使用的是什么产品,什么版本?在什么操作系统上?
前端使用的是 Saber 。后端是Bladex 2.7,,运行在Linux 环境centos7 系统中,通过 docker 部署的
四、请提供详细的错误堆栈信息,这很重要。
后端 docker web-nginx打印的日志
Saber 网页上的 信息:
代码部分:
后端:
Saber前端:
五、若有更多详细信息,请在下面提供。
这个传文件是先传到 blade-resource微服务(java),然后再由微服务传到Minio。
然后saber的设置中有超时时间,微服务也有自动熔断的时间,这样传文件。文件一大一定会超时报错。
也不可能无限制的把超时时间拉长。
所以如果你用minio的话,我建议使用如下方案:
先向微服务请求一个预签名上传文件url,同时服务端写库一条标记文件状态是“预签名未上传”,并把文件id、预签名上传文件url(presignedPutObjectUrl)一并返回
前端使用预签名上传文件url(presignedPutObjectUrl)直传minio
传完了,再调用一个验证接口;使用文件id,让微服务验证文件在minio中是否存在,如果存在,把文件表状态改为 “正常”
我们公司目前正在用的是这个方案,可以供你参考
扫一扫访问 Blade技术社区 移动端