Docker部署Minio Java操作Minio

MinIo官网地址
https://www.minio.org.cn/download.shtml#/windows

docker 拉去minio镜像

docker run -p 9000:9000 -p 9001:9001 minio/minio server /data
    \--console-address ":9001"

docker 启动镜像

docker run -d `
  -p 9000:9000 `
  -p 9001:9001 `
  --name minio `
  -v D:\minio-data:/data `
  -e "MINIO_ROOT_USER=minioadmin" `
  -e "MINIO_ROOT_PASSWORD=minioadmin" `
  minio/minio server /data --console-address ":9001"

JavaSdk

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

MinioUtil

package org.example;

import io.minio.*;
import io.minio.errors.*;

import java.io.IOException;
import java.io.InputStream;
import java.security.InvalidKeyException;
import java.security.NoSuchAlgorithmException;
import java.util.Base64;

public class MinioUtil {
    public static void main(String[] args) throws Exception {
        String bucketName = "image";
//        upload("image", "test2.jpg", "D:\\Pictures\\Saved Pictures\\1754485978571.png");
//        byte[] bytes = readByte("image", "test2.jpg");
//        System.out.println(Base64.getEncoder().encodeToString(bytes));
        remove(bucketName, "test2.jpg");
    }

    /**
     * 读取minio文件字节数组
     *
     * @param bucketName     minio桶名称
     * @param remoteFileName minio文件名称
     * @return byte[]
     * @throws ServerException           异常抛出
     * @throws InsufficientDataException 异常抛出
     * @throws ErrorResponseException    异常抛出
     * @throws IOException               异常抛出
     * @throws NoSuchAlgorithmException  异常抛出
     * @throws InvalidKeyException       异常抛出
     * @throws InvalidResponseException  异常抛出
     * @throws XmlParserException        异常抛出
     * @throws InternalException         异常抛出
     */
    public static byte[] readByte(String bucketName, String remoteFileName)
            throws ServerException, InsufficientDataException, ErrorResponseException,
            IOException, NoSuchAlgorithmException, InvalidKeyException, InvalidResponseException,
            XmlParserException, InternalException {
        InputStream ins = readStream(bucketName, remoteFileName);
        byte[] bytes = ins.readAllBytes();
        ins.close();
        return bytes;
    }

    /**
     * 读取minio文件字节数组
     *
     * @param bucketName     minio桶名称
     * @param remoteFileName minio文件名称
     * @return inputStream
     * @throws ServerException           异常抛出
     * @throws InsufficientDataException 异常抛出
     * @throws ErrorResponseException    异常抛出
     * @throws IOException               异常抛出
     * @throws NoSuchAlgorithmException  异常抛出
     * @throws InvalidKeyException       异常抛出
     * @throws InvalidResponseException  异常抛出
     * @throws XmlParserException        异常抛出
     * @throws InternalException         异常抛出
     */
    public static InputStream readStream(String bucketName, String remoteFileName)
            throws ServerException, InsufficientDataException, ErrorResponseException,
            IOException, NoSuchAlgorithmException, InvalidKeyException, InvalidResponseException,
            XmlParserException, InternalException {
        return client().getObject(
                GetObjectArgs.builder()
                        .bucket(bucketName)
                        .object(remoteFileName)
                        .build());
    }

    /**
     * 下载文件到本地
     *
     * @param bucketName     Minio桶名称
     * @param remoteFileName Minio文件名称
     * @param localFileName  本地文件全路径+文件名称
     * @throws ServerException           异常抛出
     * @throws InsufficientDataException 异常抛出
     * @throws ErrorResponseException    异常抛出
     * @throws IOException               异常抛出
     * @throws NoSuchAlgorithmException  异常抛出
     * @throws InvalidKeyException       异常抛出
     * @throws InvalidResponseException  异常抛出
     * @throws XmlParserException        异常抛出
     * @throws InternalException         异常抛出
     */
    public static void downloadFile(String bucketName, String remoteFileName, String localFileName)
            throws ServerException, InsufficientDataException, ErrorResponseException,
            IOException, NoSuchAlgorithmException, InvalidKeyException, InvalidResponseException,
            XmlParserException, InternalException {
        MinioClient minioClient = client();
        DownloadObjectArgs downloadArgs = DownloadObjectArgs.builder()
                .bucket(bucketName)
                .object(remoteFileName) // 远程文件名
                .filename(localFileName) // 下载到本地的路径
                .build();
        minioClient.downloadObject(downloadArgs);
    }

    /**
     * 上传文件到MinIo
     *
     * @param bucketName     Minio桶名称
     * @param remoteFileName Minio中文件名称
     * @param localFileName  本地文件全路径
     * @throws IOException               异常抛出
     * @throws ServerException           异常抛出
     * @throws InsufficientDataException 异常抛出
     * @throws ErrorResponseException    异常抛出
     * @throws NoSuchAlgorithmException  异常抛出
     * @throws InvalidKeyException       异常抛出
     * @throws InvalidResponseException  异常抛出
     * @throws XmlParserException        异常抛出
     * @throws InternalException         异常抛出
     */
    public static void upload(String bucketName, String remoteFileName, String localFileName)
            throws IOException, ServerException, InsufficientDataException, ErrorResponseException,
            NoSuchAlgorithmException, InvalidKeyException, InvalidResponseException,
            XmlParserException, InternalException {
        MinioClient minioClient = client();
        UploadObjectArgs uploadArgs = UploadObjectArgs.builder()
                .bucket(bucketName)
                .object(remoteFileName) // 文件名
                .filename(localFileName) // 本地文件路径
                .build();
        minioClient.uploadObject(uploadArgs);
    }

    /**
     * 删除minio上的一个文件
     *
     * @param bucketName     minio桶名称
     * @param remoteFileName 远程文件名
     * @throws ServerException           异常抛出
     * @throws InsufficientDataException 异常抛出
     * @throws ErrorResponseException    异常抛出
     * @throws IOException               异常抛出
     * @throws NoSuchAlgorithmException  异常抛出
     * @throws InvalidKeyException       异常抛出
     * @throws InvalidResponseException  异常抛出
     * @throws XmlParserException        异常抛出
     * @throws InternalException         异常抛出
     */
    public static void remove(String bucketName, String remoteFileName)
            throws ServerException, InsufficientDataException, ErrorResponseException,
            IOException, NoSuchAlgorithmException, InvalidKeyException, InvalidResponseException,
            XmlParserException, InternalException {
        client().removeObject(RemoveObjectArgs
                .builder()
                .bucket(bucketName)
                .object(remoteFileName)
                .build());
    }

    public static MinioClient client() {
        return MinioClient.builder()
                .endpoint("http://127.0.0.1:9000")
                .credentials("minioadmin", "minioadmin")
                .build();

    }
}

posted @ 2025-08-06 21:37  wds09  阅读(45)  评论(0)    收藏  举报