一. Docker拉取镜像(确保自己的服务器已经安装Docker)

1
docker pull minio/minio

二. 启动一个miniio容器

1
2
3
4
5
6
7
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管理界面

端口90909999(确保在服务器放行相关端口即可访问)

image-20221118102023717

点击 create a Bucket 创建一个bucket(桶), 这里的Bucket 我们可以理解为文件存储的目录

输入 bucket name ,点击create bucket 。可以通过 upload 上传文件到bucket中。

四. Java 上传文件到minio

  1. 导入依赖

    1
    2
    3
    4
    5
    <dependency>
    <groupId>io.minio</groupId>
    <artifactId>minio</artifactId>
    <version>7.1.0</version>
    </dependency>
  2. 测试类(需要输入自己的账号密码和IP)

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    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

image-20221118103113051

然后找到access Rules添加访问规则如下:

image-20221118103150617

然后再访问路径:http://IP:9090/bucket-test/welt.jpg