title: 使用Minio存储文件对象
一. Docker拉取镜像(确保自己的服务器已经安装Docker)
docker pull minio/minio
二. 启动一个miniio容器
docker run --name minio -p 9090:9000 -p 9999:9999 -d \
--restart=always -e \
"MINIO_ROOT_USER=minio" \
-e "MINIO_ROOT_PASSWORD=minio123" \
-v /home/minio/data:/data \
-v /home/minio/config:/root/.minio minio/minio server /data --console-address '0.0.0.0:9999'
账号是minio; 密码是minio123
三. 访问minio管理界面
端口9090或9999(确保在服务器放行相关端口即可访问)
点击 create a Bucket 创建一个bucket(桶), 这里的Bucket 我们可以理解为文件存储的目录
输入 bucket name ,点击create bucket 。可以通过 upload 上传文件到bucket中。
四. Java 上传文件到minio
-
导入依赖
<dependency> <groupId>io.minio</groupId> <artifactId>minio</artifactId> <version>7.1.0</version> </dependency>
-
测试类(需要输入自己的账号密码和IP)
import io.minio.MinioClient; import io.minio.ObjectWriteResponse; import io.minio.PutObjectArgs; import io.minio.errors.MinioException; import java.io.File; import java.io.FileInputStream; /** * @author lqs * @date 2022/11/18 9:53 */ public class MinioTest { public static void main(String[] args) throws Exception { try { // 构建一个Minio客户端 MinioClient minioClient = MinioClient.builder() //创建容器时指定的账号 .credentials("账号", "密码") //上传地址 .endpoint("http://IP:9090").build(); File file = new File("C:\\Users\\coderyeah\\Desktop\\welt.jpg"); PutObjectArgs putObjectArgs = PutObjectArgs.builder() .object("welt.jpg") //文件名 .contentType("image/jpeg") //文件类型 .bucket("bucket-test") //存储目录名 .stream(new FileInputStream(file), file.length(), -1).build(); //文件流,以及大小,-1代表不分片 //执行上传 ObjectWriteResponse objectWriteResponse = minioClient.putObject(putObjectArgs); System.out.println("上传结果 " + objectWriteResponse); //上传之后的文件地址是: String filePath = "http://IP:9090/bucket-test/welt.jpg"; } catch (MinioException e) { System.out.println("Error occurred: " + e); } } }
五. 配置权限
如果我们需要我们上传的文件可以被匿名用户访问,那么需要添加访问权限:找到文件存储目录,点击manager
然后找到access Rules添加访问规则如下:
然后再访问路径:http://IP:9090/bucket-test/welt.jpg
ules添加访问规则如下:
[外链图片转存中…(img-5A8726lu-1668738774381)]
然后再访问路径:http://IP:9090/bucket-test/welt.jpg