以下是使用 Java 上传文件到 Minio 并获取上传进度的示例代码:

import io.minio.MinioClient;
import io.minio.PutObjectOptions;
import io.minio.errors.MinioException;
import io.minio.progress.ProgressEvent;
import io.minio.progress.ProgressListener;

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;

public class MinioUploader {

    public static void main(String[] args) {
        String endpoint = 'http://localhost:9000'; // Minio 服务的 URL
        String accessKey = 'accessKey'; // Minio 的 accessKey
        String secretKey = 'secretKey'; // Minio 的 secretKey
        String bucketName = 'test'; // 存储桶名称
        String objectName = 'test.txt'; // 对象名称
        File file = new File('test.txt'); // 上传的文件

        try {
            // 创建 Minio 客户端
            MinioClient minioClient = new MinioClient(endpoint, accessKey, secretKey);

            // 检查存储桶是否存在,如果不存在则创建存储桶
            boolean isExist = minioClient.bucketExists(bucketName);
            if (!isExist) {
                minioClient.makeBucket(bucketName);
            }

            // 上传文件,并获取上传进度
            PutObjectOptions options = new PutObjectOptions(file.length(), -1);
            InputStream inputStream = new FileInputStream(file);
            ProgressListener progressListener = new ProgressListener() {
                @Override
                public void progressChanged(ProgressEvent progressEvent) {
                    System.out.println('上传进度:' + progressEvent.bytesTransferred() + '/' + progressEvent.totalBytes());
                }
            };
            options.setProgressListener(progressListener);
            minioClient.putObject(bucketName, objectName, inputStream, options);
            System.out.println('文件上传成功!');
        } catch (MinioException | IOException e) {
            System.out.println('Error occurred: ' + e);
        }
    }
}

在上传文件时,可以通过 PutObjectOptions 类的 setProgressListener() 方法设置上传进度监听器。在监听器的 progressChanged() 方法中,可以获取上传进度。上传进度信息包括已传输的字节数和总字节数。

Java 上传文件到 Minio 并获取上传进度

原文地址: https://www.cveoy.top/t/topic/nm68 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录