温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

SpringBoot 2.x怎么整合MinIo文件服务

发布时间:2021-12-21 10:31:14 来源:亿速云 阅读:167 作者:iii 栏目:开发技术

本篇内容主要讲解“SpringBoot 2.x怎么整合MinIo文件服务”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“SpringBoot 2.x怎么整合MinIo文件服务”吧!

MinIO 是高性能的对象存储,兼容 Amazon S3接口,充分考虑开发人员的需求和体验;支持分布式存储,具备高扩展性、高可用性;部署简单但功能丰富。官方的文档也很详细。它有多种不同的部署模式(单机部署,分布式部署)。

为什么说 MinIO 简单易用,原因就在于它的启动、运行和配置都很简单。可以通过 docker 方式进行安装运行,也可以下载二进制文件,然后使用脚本运行。

安装

推荐使用 docker 一键安装:

docker run -it -p 9000:9000 --name minio \
-d --restart=always \
-e "MINIO_ACCESS_KEY=admin" \
-e "MINIO_SECRET_KEY=admin123456" \
-v /mnt/minio/data:/data \
-v /mnt/minio/config:/root/.minio \
minio/minio server /data

注意:

  • 密钥必须大于8位,否则会创建失败

  • 文件目录和配置文件一定要映射到主机,你懂得

整合Nginx:

server{
   listen 80;
   server_name minio.cloudbed.vip;
   location /{
       proxy_set_header Host $http_host;
       proxy_pass http://localhost:9000;
   }
   location ~ /\.ht {
       deny  all;
   }
}

这样,通过浏览器访问配置的地址,使用指定的 MINIO_ACCESS_KEY 及 MINIO_SECRET_KEY 登录即可。

简单看了一下,功能还算可以,支持创建Bucket,文件上传、删除、分享、下载,同时可以对Bucket设置读写权限。

整合

Minio支持接入JavaScript、Java、Python、Golang等多种语言,这里我们选择最熟悉的Java语言,使用最流行的框架 SpringBoot 2.x。

pom.xml引入:

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

application.properties引入:

# MinIo文件服务器
min.io.endpoint = http://minio.cloudbed.vip
min.io.accessKey = admin
min.io.secretKey = admin123456

MinIoProperties.java 配置实体:

/**
* 实体类
* 爪哇笔记:https://blog.52itstyle.vip
*/
@Data
@ConfigurationProperties(prefix = "min.io")
public class MinIoProperties {

   private String endpoint;
   private String accessKey;
   private String secretKey;
}

撸一个工具类:

/**
* 工具类
* 爪哇笔记:https://blog.52itstyle.vip
*/
@Component
@Configuration
@EnableConfigurationProperties({MinIoProperties.class})
public class MinIoUtils {

   private MinIoProperties minIo;

   public MinIoUtils(MinIoProperties minIo) {
       this.minIo = minIo;
   }

   private MinioClient instance;

   @PostConstruct
   public void init() {
       try {
           instance = new MinioClient(minIo.getEndpoint(),minIo.getAccessKey(),minIo.getSecretKey());
       } catch (InvalidPortException e) {
           e.printStackTrace();
       } catch (InvalidEndpointException e) {
           e.printStackTrace();
       }
   }

   /**
    * 判断 bucket是否存在
    * @param bucketName
    * @return
    */
   public boolean bucketExists(String bucketName){
       try {
           return instance.bucketExists(bucketName);
       } catch (Exception e) {
           e.printStackTrace();
       }
       return false;
   }

   /**
    * 创建 bucket
    * @param bucketName
    */
   public void makeBucket(String bucketName){
       try {
           boolean isExist = instance.bucketExists(bucketName);
           if(!isExist) {
               instance.makeBucket(bucketName);
           }
       } catch (Exception e) {
           e.printStackTrace();
       }
   }

   /**
    * 文件上传
    * @param bucketName
    * @param objectName
    * @param filename
    */
   public void putObject(String bucketName, String objectName, String filename){
       try {
           instance.putObject(bucketName,objectName,filename,null);
       } catch (Exception e) {
           e.printStackTrace();
       }
   }
   /**
    * 文件上传
    * @param bucketName
    * @param objectName
    * @param stream
    */
   public void putObject(String bucketName, String objectName, InputStream stream){
       try {
           instance.putObject(bucketName,objectName,stream,null);
       } catch (Exception e) {
           e.printStackTrace();
       }
   }
   /**
    * 删除文件
    * @param bucketName
    * @param objectName
    */
   public void removeObject(String bucketName, String objectName){
       try {
           instance.removeObject(bucketName,objectName);
       } catch (Exception e) {
           e.printStackTrace();
       }
   }
//省略各种CRUD
}

目前SDK不支持文件夹的创建,如果想创建文件夹,只能通过文件的方式上传并创建。

minIoUtils.putObject("itstyle","妹子图/爪哇妹.jpg","C:\\爪哇妹.jpg");

一个实例只能有一个账号,如果想使用多个账号,需要创建多个实例。此外 minio还支持单主机,多块磁盘以及分布式部署,不过对于大部分单体应用来说,单体已经够用了。

到此,相信大家对“SpringBoot 2.x怎么整合MinIo文件服务”有了更深的了解,不妨来实际操作一番吧!这里是亿速云网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI