如何使用MinIO Java SDK检查MinIO存储桶中是否存在对象?

问题描述 投票:0回答:3

我目前正在开发一个带有 MinIO 对象存储的 Spring Web 应用程序。我需要实现一个功能来检查上传文件是否成功上传或检查文件是否存在于存储桶中。

根据我的研究,我发现的所有信息都已过时,无法与最新的 MinIO Java SDK 一起使用。这就是为什么我决定在这里问这个问题。

java amazon-s3 sdk minio
3个回答
8
投票

深入研究 MinIO Java SDK 一段时间后。我发现如果你在minioClient中调用statObject函数,只有当对象存在于桶中时才会成功。当对象不存在时抛出 ErrorResponseException。

所以我想出了这个功能。

public boolean isObjectExist(String name) {
        try {
            minioClient.statObject(StatObjectArgs.builder()
                    .bucket(defaultBucketName)
                    .object(name).build());
            return true;
        } catch (ErrorResponseException e) {
            e.printStackTrace();
            return false;
        } catch (Exception e) {
            e.printStackTrace();
            throw new RuntimeException(e.getMessage());
        }
    }

2
投票

在 Javascript 和 Node js 中我做了以下事情

exports.isObjectExistInMinio = async(bucketName, fileName)=> {
    try {
        await Minio.minioClient.statObject(bucketName, fileName);
        return true;
    } catch (error) {
        console.error(error);
        return false;
    }
}

0
投票

使用 e.errorResponse().code() == "NoSuchKey" 检查 ErrorResponseException

public static boolean objectExists(MinioClient minioClient, String bucketName, String objectName) {
    try {
        minioClient.statObject(
                StatObjectArgs.builder().bucket(bucketName).object(objectName).build());
        return true;
    } catch (ErrorResponseException e) {
        if ("NoSuchKey".equals(e.errorResponse().code())) {
            return false;
        } else {
            throw new RuntimeException("Error occurred while checking object existence", e);
        }
    } catch (InsufficientDataException | InternalException | InvalidKeyException |
             InvalidResponseException | ServerException | XmlParserException |
             IOException | NoSuchAlgorithmException e) {
        throw new RuntimeException("Error occurred while checking object existence", e);
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.