在本文中,我们使用Springboot整合Minio。在这里,我们不直接使用其启动器,因为Maven仓库中只有两个版本,并且不被广泛使用。在这里我们可以自己编写一个起动器,并且可以直接引用其他物品。
让我们先谈谈一个坑。Minio的中文文档版本与最新版本完全不匹配。对于英语官方网站,我一直无法访问它。我不知道我的朋友是否遇到了同样的问题。
有关Minio的建立,请参阅我以前的文章:在CentOS7环境中创建Minio步骤详细教程
没什么可说的,请输入主题。
我使用版本:
这里有一个坑。最初,我使用了最新的8.3.0版本。写所有代码时,我发现该错误的启动:
我认为这是OKHTTP的版本或软件包重复问题。它被修改了,发现它没有用。最终解决方案是将Minio的版本减少到8.2.1。您认识的朋友可以尝试减少版本。
我们需要准备以下内容。配置文件中的配置yaml是Minio服务地址,用户名,密码,桶名:
另一方面,在弹簧上传文件上设置最大限制。如果仍然不好,请考虑是否是网关,还是仍需要配置Nginx。我在最终配置文件中给出100m的大小:
这里的工作需要两个配置类,这是读取YAML配置的属性配置;另一个是针对弹簧容器的初始化小型选手:
直接为其他服务提供简单的工具类,包括上传和下载:
关于上面下载文件的返回值,我们的前端均匀返回。如果其他项目想使用它,我们可以自己修改它,直接响应body下载等。在此,我主要是指如何上传小型符号,只需下载文件即可。
我们使用Springboot进行了集成的Knife4J,并直接通过网关接受了接口文档,以及Postman。我提供了以下简单的接口进行测试。
接口页面上传文档以查看:
一个坑来了,发现退货成功,文件名。但是Minio控制台上没有数据吗?
乍一看,我报告了一个错误,这么长:
原因是什么?因为我的Minio是群集模式,所以我使用nginx加载,并且在这里报告错误。在我的文章中提到的上一篇文章中,错误的NGINX配置以及如何构建环境。
此处的单个节点的配置立即很好。从100,000到负载端口再到9000个单节点端口,之后还可以。
当Nginx反向代理重新发布时,这个问题与携带的标头有关。当Minio检查签名是否有效时,我们必须从HTTP标头获得主机,并且我们在这里没有必要的处理标头。因此,我们需要添加以下配置:
完整的NGINX配置如下:
再次上传测试,成功:
到目前为止,它已经完成!请不要忘记配置Spring.factories。