- 创建一个名为
test
的存储桶
mc mb minio/test

文章插图
- 共享
avatar.png
文件的下载路径
mc share download minio/blog/avatar.png

文章插图
- 查找
blog
存储桶中的png文件
mc find minio/blog --name "*.png"

文章插图
- 设置
test
存储桶的访问权限为只读
。
# 目前可以设置这四种权限:none, download, upload, publicmc policy set download minio/test/# 查看存储桶当前权限mc policy list minio/test/

文章插图
9. 兼容AWS S3
当我们对接第三方服务要用到对象存储时,这些服务往往都是支持AWS S3的 。比如说一个直播的回放功能,需要对象存储来存储回放的视频,由于MinIO兼容AWS S3的大多数API,我们可以直接拿它当AWS S3来使用 。
- 我们可以下载个AWS S3的客户端来试试,MinIO到底能不能支持S3的API,这里使用的是
S3 Browser
,下载地址:https://s3browser.com/

文章插图
- 安装好
S3 Browser
之后,添加一个Account,输入相关登录信息,注意选择Account类型为S3 Compatible Storage

文章插图
- 连接成功后,我们可以看见之前我们创建的存储桶和上传的文件

文章插图
S3 Browser
这个工具功能还是很强大的

文章插图
- 如果你想修改存储桶的访问权限的话直接通过
Permissions
标签修改即可 。

文章插图
10. 利用Java客户端调用MinIO参考文档:https://docs.min.io/docs/java-client-api-reference.html
10.1 引入依赖在service-product模块中添加依赖
<dependency><groupId>io.minio</groupId><artifactId>minio</artifactId><version>8.2.0</version></dependency>
10.2 添加配置文件minio:endpointUrl: http://IP:9000accessKey: adminsecreKey: admin123456bucketName: file
10.3 编写java程序@RestController@RequestMapping("admin/product")public class FileUploadController {//获取文件上传对应的地址@Value("${minio.endpointUrl}")public String endpointUrl;@Value("${minio.accessKey}")public String accessKey;@Value("${minio.secreKey}")public String secreKey;@Value("${minio.bucketName}")public String bucketName;//文件上传控制器@PostMapping("fileUpload")public Result fileUpload(MultipartFile file) throws Exception{//准备获取到上传的文件路径!String url = "";// 使用MinIO服务的URL,端口,Access key和Secret key创建一个MinioClient对象// MinioClient minioClient = new MinioClient("https://play.min.io", "Q3AM3UQ867SPQQA43P2F", "zuf+tfteSlswRu7BJ86wekitnifILbZam1KYY3TG");MinioClient minioClient =MinioClient.builder().endpoint(endpointUrl).credentials(accessKey, secreKey).build();// 检查存储桶是否已经存在boolean isExist = minioClient.bucketExists(BucketExistsArgs.builder().bucket(bucketName).build());if(isExist) {System.out.println("Bucket already exists.");} else {// 创建一个名为asiatrip的存储桶,用于存储照片的zip文件 。minioClient.makeBucket(MakeBucketArgs.builder().bucket(bucketName).build());}//定义一个文件的名称 : 文件上传的时候,名称不能重复!String fileName = System.currentTimeMillis()+ UUID.randomUUID().toString();// 使用putObject上传一个文件到存储桶中 。//minioClient.putObject("asiatrip","asiaphotos.zip", "/home/user/Photos/asiaphotos.zip");minioClient.putObject(PutObjectArgs.builder().bucket(bucketName).object(fileName).stream(file.getInputStream(), file.getSize(), -1).contentType(file.getContentType()).build());//System.out.println("/home/user/Photos/asiaphotos.zip is successfully uploaded as asiaphotos.zip to `asiatrip` bucket.");//文件上传之后的路径: http://192.168.86.101:9000/file/xxxxxxurl = endpointUrl+"/"+bucketName+"/"+fileName;System.out.println("url:\t"+url);//将文件上传之后的路径返回给页面!return Result.ok(url);}}
经验总结扩展阅读
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- var,let和const的不同 第一百零六篇:变量的不同声明
- 纸嫁衣4红丝缠第四章门密码锁密码是什么
- 纸嫁衣4第五章游戏攻略
- 纸嫁衣4红丝缠第四章怎么速通
- 顶楼第二季是原班人马吗_顶楼第二季演员表
- 补办身份证需要带什么证件
- 纸嫁衣4红丝缠第五章木板上小人怎么摆放
- 白凉粉可以煮第二次吗
- .NET周报【11月第1期 2022-11-07】
- 第2-1-4章 SpringBoot整合FastDFS文件存储服务