首页 > 其他分享 >MinIO应用类

MinIO应用类

时间:2024-01-24 10:59:45浏览次数:18  
标签:MinIO io minio bucketName 应用 import public String


1.配置类


import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import io.minio.MinioClient;


@Configuration
@ConfigurationProperties(prefix = "minio")
public class MinioConfig {
  /**
   * 服务地址
   */
  private String endpoint;

  /**
   * 用户名
   */
  private String accessKey;

  /**
   * 密码
   */
  private String secretKey;

  /**
   * 存储桶名称
   */
  private String bucketName;

  public String getEndpoint() {
    return endpoint;
  }

  public void setEndpoint(String endpoint) {
    this.endpoint = endpoint;
  }

  public String getAccessKey() {
    return accessKey;
  }

  public void setAccessKey(String accessKey) {
    this.accessKey = accessKey;
  }

  public String getSecretKey() {
    return secretKey;
  }

  public void setSecretKey(String secretKey) {
    this.secretKey = secretKey;
  }

  public String getBucketName() {
    return bucketName;
  }

  public void setBucketName(String bucketName) {
    this.bucketName = bucketName;
  }


}


2.应用类

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

import io.minio.BucketExistsArgs;
import io.minio.DownloadObjectArgs;
import io.minio.GetPresignedObjectUrlArgs;
import io.minio.MinioClient;
import io.minio.RemoveObjectArgs;
import io.minio.RemoveObjectsArgs;
import io.minio.Result;
import io.minio.StatObjectArgs;
import io.minio.StatObjectResponse;
import io.minio.UploadObjectArgs;
import io.minio.errors.MinioException;
import io.minio.http.Method;
import io.minio.messages.DeleteError;
import io.minio.messages.DeleteObject;

@Component
public class MinioTemplate {



  private static MinioConfig minioConfig;

  @Autowired
  public void setMinioConfig(MinioConfig minioConfig) {
    MinioUtils.minioConfig = minioConfig;
  }

  private static MinioClient minioClient;

  public static void getMinioClient() {
    try {
      if (minioClient == null) {
        // 创建一个MinioClient对象
        minioClient = MinioClient.builder().endpoint(minioConfig.getEndpoint()).credentials(minioConfig.getAccessKey(), minioConfig.getSecretKey()).build();
      }
    } catch (Exception e) {
      e.printStackTrace();
    }
  }

  // 上传文件
  public void uploadFile(String bucketName, String objectName, String fileName) throws Exception {
    try {
      getMinioClient();
      // 上传文件
      minioClient.uploadObject(UploadObjectArgs.builder().bucket(bucketName).object(objectName).filename(fileName).build());     
    } catch (MinioException e) {
      e.printStackTrace();
    }
  }

  // 下载文件
  public void downloadFile(String bucketName, String objectName, String fileName) {
    try {
      getMinioClient();
      // 下载对象
      minioClient.downloadObject(DownloadObjectArgs.builder().bucket(bucketName).object(objectName).filename(fileName).build());
    } catch (Exception e) {
      e.printStackTrace();
    }
  }

  // 删除文件
  public void deleteFile(String bucketName, String objectName) {
    try {
      getMinioClient();
      // 判断对象是否存在
      StatObjectResponse statObjectResponse = minioClient.statObject(StatObjectArgs.builder().bucket(bucketName).object(objectName).build());
    } catch (Exception e) {
      e.printStackTrace();
      return;
    }
    try {
      // 删除文件
      minioClient.removeObject(RemoveObjectArgs.builder().bucket(bucketName).object(objectName).build());
    } catch (Exception e) {
      e.printStackTrace();
    }
  }

  // 批量删除文件
  public void deleteFileBatch(String bucketName, Iterable<DeleteObject> objects) {
    try {
      getMinioClient();
      // 批量删除文件
      Iterable<Result<DeleteError>> results = minioClient.removeObjects(RemoveObjectsArgs.builder().bucket(bucketName).objects(objects).build());
      for (Result<DeleteError> result : results) {
        DeleteError error = result.get();
        System.out.println("Error in deleting object " + error.objectName() + "; " + error.message());
      }

    } catch (Exception e) {
      e.printStackTrace();
    }
  }

  // 生成文件分享URL
  public String shareFilePath(String bucketName, String objectName) {
    String url = "";
    try {
      getMinioClient();
      // 生成文件分享URL
      url = minioClient.getPresignedObjectUrl(GetPresignedObjectUrlArgs.builder().method(Method.GET).bucket(bucketName).object(objectName).expiry(60 * 60 * 24).build());
    } catch (Exception e) {
      e.printStackTrace();
    }
    return url;
  }

  // 生成文件分享URL
  public String shareFilePath(String objectName) {
    String url = "";
    try {
      getMinioClient();
      // 生成文件分享URL
      url = minioClient.getPresignedObjectUrl(GetPresignedObjectUrlArgs.builder().method(Method.GET).bucket(minioConfig.getBucketName()).object(objectName).expiry(60 * 60 * 24).build());
    } catch (Exception e) {
      e.printStackTrace();
    }
    return url;
  }

  // 获取对象元数据
  public StatObjectResponse getStatObject(String objectName) {
    try {
      getMinioClient();
      // 获取对象元数据
      StatObjectResponse statObjectResponse = minioClient.statObject(StatObjectArgs.builder().bucket(minioConfig.getBucketName()).object(objectName).build());
      return statObjectResponse;
    } catch (Exception e) {
      e.printStackTrace();
    }
    return null;
  }

  // 判断bucket是否存在
  public boolean isExistsBucket(String bucketName) {
    try {
      getMinioClient();
      // 检查存储桶是否已经存在
      boolean found = minioClient.bucketExists(BucketExistsArgs.builder().bucket(bucketName).build());
      if (!found) {
        return false;
      }
    } catch (Exception e) {
      e.printStackTrace();
      return false;
    }
    return true;
  }

}


------------------------

标签:MinIO,io,minio,bucketName,应用,import,public,String
From: https://www.cnblogs.com/gispathfinder/p/17984116

相关文章

  • app免费签名分发平台应用cdn分发平台为什么会免费?虾分发分析报告
    近年来,随着移动应用的迅速发展,免费app签名分发平台和应用CDN分发平台日益受到开发者和用户的关注。本报告旨在分析这些平台的商业模式,探讨其利润点、营销点以及所采取的优势。 一、商业模式分析:广告收入:免费app签名分发平台和应用CDN分发平台主要通过展示广告来获取收入。广......
  • minio 支持基于yaml 的配置管理
    minio23年底的一个版本中,支持了基于yaml的配置参数,以前基于环境变量的模式还是支持的,只是yaml成为一个首选模式参考配置yaml配置version:v1address:':9000'rootUser:'minioadmin'rootPassword:'pBU94AGAY85e'console-address:':9001'certs......
  • schedule库应用
    python中有一个轻量级的定时任务调度的库:schedule。他可以完成每分钟,每小时,每天,周几,特定日期的定时任务。因此十分方便我们执行一些轻量级的定时任务.点击查看代码importscheduleimporttimedefjob():print("I'mworking...")schedule.every(10).minutes.do(job......
  • 如何查找SpringBoot应用中的请求路径(不使用idea)
    背景昨天有个同事向我咨询某个接口的物理表是哪个,由于公司业务较多、这块业务的确不是我负责的,也没有使用idea不能全局搜索(eclipse搜不到jar内的字符串),也就回复了不清楚。除了自己写代码输出servlet的路径和类外,发现了一个我之前没用过的方法:SpringBootActuator,分享给大家。......
  • 创新医疗服务:宠物在线问诊系统的搭建与应用
    随着科技的不断进步,创新的医疗服务方式也日渐成为宠物主人关心爱宠健康的首选。本文将深入介绍如何搭建一套创新的宠物在线问诊系统,并展示其应用的技术代码。1.系统架构与技术选择在开始搭建之前,我们需要设计系统的架构并选择合适的技术栈。一个典型的宠物在线问诊系统可以分为前......
  • TSINGSEE车辆检测算法及车辆结构化数据在车辆智能管控中的应用
    AI边缘计算智能分析网关V4车辆检测、车牌识别算法融合了ORC识别、云计算、计算机视觉、大数据检索等多种技术,可将运动中的机动车牌照从复杂的背景中提取并识别出来,通过车牌提取、图像预处理、特征提取、车牌字符识别等流程,识别出车辆牌号、颜色等信息。AI智能分析网关V4内置近40......
  • fMP4流媒体视频格式特点及其应用场景介绍
    近期我们在视频监控管理平台EasyCVR系统中新增了HTTP-FMP4播放协议,今天我们就来聊聊该协议的特点和应用。fMP4(FragmentedMPEG-4)是基于MPEG-4Part12的流媒体格式,是流媒体的一项重要技术,它能通过互联网传送高质量的视频内容。FMP4格式将整个视频文件分割为多个小片段,每个片段包含......
  • 单层应用升级到多层应用3
    接上文,我们已经初步完成了单层到多层的拆分,接下来就是再优化我们的结构了。升级思路在前文的Core项目中,包含了我们所有的基础功能,但是有些项目可能只需要部分功能却引用整一块Core的话,会显得有些多余,需要将这部分基础设施再做一下细致化的拆分。在Host项目中,仍旧还有许多功能代......
  • 应用集成(iPaaS)和数据集成(ETL)高效协同的最佳实践
    随着企业数字化的步伐加快,企业IT工程师和数据工程师在应用和数据集成方面的工作变得日益密切。IT工程师通常利用iPaaS(Integration Platform as a Service)来进行异构应用和数据的集成,而数据工程师则倾向于使用ELT/ETL(Extract, Transform, Load)工具来进行数据集成。两者之间如......
  • 浅谈智能照明控制系统应用与节能分析
    引言随着人们的物质和精神生活水平不断提高,对生活的追求向着更舒适、安全、高效和节能的方向发展,对建筑照明技术的要求也越来越高。新兴的“智能照明”技术是现代计算机技术、控制技术、通信技术与建筑照明技术的有机结合,与传统照明技术相比在各方面均具有优越性。但是,该技术在实际......