当前位置: 首页 > article >正文

安装以及使用Minio分布式文件系统

简介

MinIO 是一个非常轻量的服务,可以很简单的和其他应用的结合使用,它兼容亚马逊 S3 云存储服务接口,非常适合于存储大容量非结构化的数据,例如图片、视频、日志文件、备份数据和容器/虚拟机镜像等。

它一大特点就是轻量,使用简单,功能强大,支持各种平台,单个文件最大5TB,兼容 Amazon S3接口,提供了 Java、Python、GO等多版本SDK支持。

官网:https://min.io

中文:https://www.minio.org.cn/,http://docs.minio.org.cn/docs/

MinIO集群采用去中心化共享架构,每个结点是对等关系,通过Nginx可对MinIO进行负载均衡访问。

安装与运行

下载MinIO:访问MinIO的官方网站https://min.io/)并导航到下载页面。选择适用于您操作系统的MinIO二进制文件进行下载。

这里我下载的是windows版本的,然后执行:

minio.exe server F:\project\minIO\minio\minIoData

访问MinIO管理界面:在浏览器中访问 http://localhost:9000,看到MinIO的管理界面,账号密码是minioadmin,同时创建你想要储存的文件的bucket。

设置为public 

 要改变accesskey的话:

输入bucket的名称,点击“CreateBucket”,创建成功

整合

 在安装MinIO服务器后,可以使用Spring Boot来接收前端上传的图片,并将其保存到MinIO,然后获取图片的访问链接。以下是实例代码:

添加MinIO Java客户端依赖:在Spring Boot项目的构建文件(如pom.xml)中,添加以下依赖:

<dependency>
    <groupId>io.minio</groupId>
    <artifactId>minio</artifactId>
    <version>8.4.3</version>
</dependency>

创建MinIO配置:在Spring Boot的配置文件中,添加MinIO服务器的端点和访问凭证配置:

minio:
  endpoint: http://localhost:9000
  accessKey: minioadmin
  secretKey: minioadmin
  bucket:
    bucket1: picture #对应桶的名字

创建文件上传接口:创建一个Spring Boot的Controller类,定义文件上传的接口:

import io.minio.MinioClient;
import io.minio.errors.MinioException;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;

import java.io.IOException;
import java.security.InvalidKeyException;
import java.security.NoSuchAlgorithmException;

@RestController
@RequestMapping("/api/files")
public class FileUploadController {

    @Value("${minio.endpoint}")
    private String minioEndpoint;

    @Value("${minio.accessKey}")
    private String minioAccessKey;

    @Value("${minio.secretKey}")
    private String minioSecretKey;


    @Value("${minio.bucket.bucket1}")
    private String bucket;

    @PostMapping("/upload")
    public ResponseEntity<String> uploadFile(@RequestParam("file") MultipartFile file) {
        try {
            // 创建MinIO客户端
            MinioClient minioClient = MinioClient.builder()
                    .endpoint(minioEndpoint)
                    .credentials(minioAccessKey, minioSecretKey)
                    .build();

            // 检查存储桶是否存在,如果不存在则创建
            String bucketName = bucket;
            boolean isExist = minioClient.bucketExists(bucketName);
            if (!isExist) {
                minioClient.makeBucket(bucketName);
            }

            // 上传文件到MinIO
            String objectName = file.getOriginalFilename();
            minioClient.uploadObject(bucketName, objectName, file.getInputStream(), file.getSize(), file.getContentType());

            // 获取文件的访问链接
            String fileUrl = minioClient.getObjectUrl(bucketName, objectName);

            return ResponseEntity.ok(fileUrl);
        } catch (MinioException | IOException | NoSuchAlgorithmException | InvalidKeyException e) {
            e.printStackTrace();
            return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).build();
        }
    }
}

代码中,/api/files/upload 是文件上传接口的URL路径,它接收前端上传的文件,并将文件保存到MinIO服务器中。在接口的实现中,我们使用MinIO Java客户端来完成文件上传和获取文件访问链接的操作。

这样返回的fileUrl就可以直接访问到图片或者是视频等文件资源了:

访问到图片了 


http://www.kler.cn/a/162725.html

相关文章:

  • 简单叙述 Spring Boot 启动过程
  • 蓝桥杯每日真题 - 第7天
  • 【计算机网络】【网络层】【习题】
  • Mit6.S081-实验环境搭建
  • 如何在Python中实现一个简单的搜索引擎:从零开始的指南
  • 【项目开发 | 跨域认证】JSON Web Token(JWT)
  • SQL注入攻击
  • numpy数据读取保存及速度测试
  • Opencv打开图片
  • Java-网络通信总结
  • 掌握VUE中localStorage的使用
  • Gateway:微服务架构中的关键组件
  • ssl什么是公钥和私钥?
  • ES-深入理解倒排索引
  • Docker-compose容器编排与容器监控
  • 基于运算放大器的电压采集电路
  • Elasticsearch:什么是检索增强生成 (RAG)?
  • 【力扣100】7.无重复字符的最长子串
  • leetcode 3. 无重复字符的最长子串
  • Mysql 索引概念回顾
  • 基于java的贪吃蛇小游戏
  • Zabbix 执行自定义key脚本超时timeout while executing a shell script
  • Linux C语言 39-进程间通信IPC之管道
  • 【科学炼丹指南】机器学习最科学、最有效的参数优化全流程实现方法
  • VUE学习一、环境的安装
  • 【力扣100】8.找到字符串中所有字母异位词