mino对象储存

mino 版本 linux安装 

 

1、安装包下载

https://dl.min.io/server/minio/release/linux-amd64/minio
 

建议使用某雷下载,速度会快点,下载包上传到/opt/minioconfig/run目录下。

2、创建数据存储目录

mkdir -p /data/minio/data
 

3、服务启动

启动并指定数据存放地址

/opt/minioconfig/run/minio server /data/minio/data/
 

输出日志

Endpoint:  http://localhost:9000  http://127.0.0.1:9000    
AccessKey: minioadmin 
SecretKey: minioadmin
 

这里就是登录地址和账号密码。

 

整合SpringBoot环境

1、基础依赖

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
    <groupId>io.minio</groupId>
    <artifactId>minio</artifactId>
    <version>3.0.12</version>
</dependency>
 

2、基础配置

配置要素:地址和端口,登录名,密码,HTML存储桶,图片存储桶。

 

minio:
  endpoint: http://192.168.72.133:9000
  accessKey: minioadmin
  secretKey: minioadmin
  bucketNameHtml: html
  bucketNameImage: image
 

文件上传之后,可以基于文件地址直接访问,但是需要在MinIO中配置文件的读写权限:

 

3、配置参数类

@Component
@ConfigurationProperties(prefix = "minio")
public class ParamConfig {

    private String endpoint ;
    private String accessKey ;
    private String secretKey ;
    private String bucketNameHtml ;
    private String bucketNameImage ;
    // 省略 get 和 set方法
}
 

4、基于MinIO配置类

封装MinIO客户端连接工具,文件上传的基础方法,返回文件在MinIO服务上的URL地址。

import io.minio.MinioClient;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Component;
import javax.annotation.PostConstruct;
import javax.annotation.Resource;

@Component
public class MinIOConfig {

    private static final Logger LOGGER = LoggerFactory.getLogger(MinIOConfig.class) ;

    @Resource
    private ParamConfig paramConfig ;

    private MinioClient minioClient ;

    /**
     * 初始化 MinIO 客户端
     */
    @PostConstruct
    private void init(){
        try {
            minioClient = new MinioClient(paramConfig.getEndpoint(),
                                          paramConfig.getAccessKey(),
                                          paramConfig.getSecretKey());
        } catch (Exception e) {
            e.printStackTrace();
            LOGGER.info("MinIoClient init fail ...");
        }
    }

    /**
     * 上传 <html> 页面
     */
    public String uploadHtml (String fileName, String filePath) throws Exception {
        minioClient.putObject(paramConfig.getBucketNameHtml(),fileName,filePath);
        return paramConfig.getEndpoint()+"/"+paramConfig.getBucketNameHtml()+"/"+fileName ;
    }

    /**
     * 上传 <img> 图片
     */
    public String uploadImg (String imgName, String imgPath) throws Exception {
        minioClient.putObject(paramConfig.getBucketNameImage(),imgName,imgPath);
        return paramConfig.getEndpoint()+"/"+paramConfig.getBucketNameImage()+"/"+imgName ;
    }
}
 

5、服务实现

提供两个基础方法:HTML和图片上传,存储在不同位置。

import com.minio.file.config.MinIOConfig;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;

@Service
public class UploadServiceImpl implements UploadService {

    @Resource
    private MinIOConfig minIOConfig ;

    // 上传 <html> ,返回服务器地址
    @Override
    public String uploadHtml(String fileName, String filePath) throws Exception {
        return minIOConfig.uploadHtml(fileName,filePath);
    }

    // 上传 <img> ,返回服务器地址
    @Override
    public String uploadImg(String imgName, String imgPath) throws Exception {
        return minIOConfig.uploadImg(imgName,imgPath);
    }
}
 

上传之后,基于浏览器访问接口返回的url,查看效果:

 

参考源码:https://gitee.com/cicadasmile/middle-ware-parent/tree/master/ware23-minio-file

posted @ 2023-05-23 12:02  忘j  阅读(115)  评论(0编辑  收藏  举报