• 使用minio进行文件存储



    title: 使用Minio存储文件对象

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

    docker pull minio/minio
    
    • 1

    二. 启动一个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'
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    账号是minio; 密码是minio123

    三. 访问minio管理界面

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

    image-20221118102023717

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

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

    四. Java 上传文件到minio

    1. 导入依赖
      <dependency>
          <groupId>io.miniogroupId>
          <artifactId>minioartifactId>
          <version>7.1.0version>
      dependency>
      
      • 1
      • 2
      • 3
      • 4
      • 5
    2. 测试类(需要输入自己的账号密码和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);
              }
          }
      }
      
      • 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

    五. 配置权限

    如果我们需要我们上传的文件可以被匿名用户访问,那么需要添加访问权限:找到文件存储目录,点击manager

    image-20221118103113051

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

    image-20221118103150617

    然后再访问路径:http://IP:9090/bucket-test/welt.jpg
    ules添加访问规则如下:

    [外链图片转存中…(img-5A8726lu-1668738774381)]

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

  • 相关阅读:
    Amazon 消息订阅对接
    【CMake】浅谈使用 colcon build 时 CMakeLists 的配置方法-1.使用第三方开源库
    arm LINUX 启动时间的一些优化项汇总
    069:vue+openlayers 显示闪闪发光的点划线( 示例代码 )
    RabbitMQ真实生产故障问题还原与分析
    web前端期末大作业网页设计与制作 ——汉口我的家乡旅游景点 5页HTML+CSS+JavaScript
    利用ros实现单片机通讯(转载)
    电脑页面不能全屏怎么办?Win11页面不能全屏的解决方法
    java版工程管理系统Spring Cloud+Spring Boot+Mybatis实现工程管理系统源码
    认识Oracle
  • 原文地址:https://blog.csdn.net/qq_49195366/article/details/127917501