title: 使用java代码操作minio对象
date: 2022-10-30 17:43:00
tags: [minio]
categories: linux
description: minio是一个分布式文件存储系统,用来存储图片、文件、视频等文件资料。minio是一个高性能的对象存储。使用java代码操作minio对象,本项目使用spring boot 框架
mathjax: true
使用java代码操作minio对象(spring boot)
maven引入minio sdk
<!-- https://mvnrepository.com/artifact/io.minio/minio -->
<dependency>
<groupId>io.minio</groupId>
<artifactId>minio</artifactId>
<version>8.4.5</version>
</dependency>
将minio相关参数加入配置文件
minio:
url: "http://192.164.20.20"
port: 9000
accessKey: minioadmin
secretKey: minioadmin
启动自动读取minio相关配置
package com.example.boot;
import com.example.constant.Constant;
import io.minio.MinioClient;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.CommandLineRunner;
import org.springframework.stereotype.Component;
/**
* @author Administrator
*/
@Component
public class BootInit implements CommandLineRunner {
Logger logger= LoggerFactory.getLogger(BootInit.class);
@Value("${minio.url}")
private String minioUrl;
@Value("${minio.port}")
private int minioPort;
@Value("${minio.accessKey}")
private String minioAccessKey;
@Value("${minio.secretKey}")
private String minioSecretKey;
private void getMinioClient(){
try {
Constant.minioClient=new MinioClient.Builder().endpoint(minioUrl,minioPort,false).credentials(minioAccessKey
,minioSecretKey).build();
logger.debug("minio is success ,server url {},port {} ",minioUrl,minioPort);
}catch (Exception e){
logger.error("init minio error "+e.getMessage());
}
}
@Override
public void run(String... args) throws Exception {
getMinioClient();
}
}
声明minio client 全局常量
package com.example.constant;
import io.minio.MinioClient;
public class Constant {
public static MinioClient minioClient;
}
编写minio util工具类
package com.example.util;
import com.example.constant.Constant;
import io.minio.BucketExistsArgs;
import io.minio.DownloadObjectArgs;
import io.minio.RemoveObjectArgs;
import io.minio.UploadObjectArgs;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
* minio 工具类,提供上传、下载方法
*/
public class MinioUtil {
static Logger logger= LoggerFactory.getLogger(MinioUtil.class);
/**
* 判断bulk桶是否存在
* @param bulkName
* @return
*/
private static boolean isBuckExist(String bulkName){
try {
return Constant.minioClient.bucketExists(BucketExistsArgs.builder().bucket(bulkName).build());
} catch (Exception e) {
logger.error("bulkname is not exist,error "+e.getMessage());
return false;
}
}
/**
*
* 上传对象
* @param bulkName
* @param objectName
* @param localFilePathName
* @return
*/
public static boolean uploadObject(String bulkName,String objectName,String localFilePathName){
if( isBuckExist(bulkName)){
try {
Constant.minioClient.uploadObject(UploadObjectArgs.builder().bucket(bulkName).object(objectName).filename(localFilePathName).build());
return true;
} catch (Exception e) {
logger.error("minio upload object file error "+e.getMessage());
return false;
}
}else{
return false;
}
}
/**
* 下载对象
* @param bulkName
* @param objectName
* @param localFilePathName
* @return
*/
public static boolean downloadObject(String bulkName,String objectName,String localFilePathName){
if(isBuckExist(bulkName)){
try{
Constant.minioClient.downloadObject(DownloadObjectArgs.builder().bucket(bulkName).object(objectName).filename(localFilePathName).build());
return true;
}catch (Exception e){
logger.error("minio download object file error "+e.getMessage());
return false;
}
}else{
return false;
}
}
/**
* 删除对象
* @param bulkName
* @param objectName
* @return
*/
public static boolean deleteObject(String bulkName,String objectName){
if(isBuckExist(bulkName)){
try{
Constant.minioClient.removeObject(RemoveObjectArgs.builder().bucket(bulkName).object(objectName).build());
return true;
}catch (Exception e){
logger.error("minio delete object file error "+e.getMessage());
return false;
}
}else{
return false;
}
}
}
测试工具类
package com.example.demo;
import com.example.util.MinioUtil;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.ComponentScan;
@SpringBootApplication
@ComponentScan(basePackages = {"com.example"})
public class DemoApplication {
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
// MinioUtil.uploadObject("test","blog.zip","E:\\blog.zip");
// MinioUtil.downloadObject("test","blog.zip","C:\\blog.zip");
MinioUtil.deleteObject("test","blog.zip");
}
}