minio-上手

minio-上手

丁起男 104 2022-09-26

minio-上手

搭建(docker)

执行命令

docker run -d 
-p 9000:9000 -p 9090:9090
-e "MINIO_ACCESS_KEY=用户名"
-e "MINIO_SECRET_KEY=密码"
-v /data/minio:/data
minio/minio
server /data
--console-address ":9000" --address:":9090"

说明

  • 端口:如果只使用页面访问,映射一个9000即可,api需要使用9090
  • 用户名和密码:用户名长度不能低于3,密码长度不能低于8,如果不指定默认都是minioadmin
  • –console-address “:9000” --address:“:9090”:minio默认api端口是动态的,通过这种方式进行固定

部署完毕可以通过http://host:9000访问

使用

  1. 导入依赖
        <dependency>
            <groupId>io.minio</groupId>
            <artifactId>minio</artifactId>
            <version>8.2.1</version>
        </dependency>
  1. 进行配置
    @Bean
    public MinioClient minioClient(){
        return MinioClient.builder()
                .endpoint("api url")
                .credentials("用户名","密码")
                .build();
    }
  1. 操作

上传文件

    public void upload(MultipartFile file){
        try {
            minioClient.putObject(PutObjectArgs.builder()
                    .bucket("bucketName")
                    .object(file.getOriginalFilename())
                    .stream(file.getInputStream(),file.getSize(),-1)
                    .contentType(file.getContentType())
                    .build());
        }catch (Exception e){
            e.printStackTrace();
        }
    }

获取访问url

    public String getUrl(String objectName,int time,TimeUnit timeUnit){
        try {
            return minioClient.getPresignedObjectUrl(GetPresignedObjectUrlArgs
                    .builder()
                    .method(Method.GET)
                    .bucket("bucketName")
                    .object(objectName)
                    .expiry(time,timeUnit)
                    .build());
        }catch (Exception e){
            e.printStackTrace();
        }
        return null;
    }