You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MINIO:minio-dotnet环境下如何获取指定对象的所有版本

基于minio-dotnet查询指定对象所有版本的实现方法

前置要求

  • 目标存储桶已开启版本控制功能,未开启版本控制的存储桶不会保留对象历史版本
  • 你使用的minio-dotnet SDK版本需支持版本相关API(v3.1.0及以上版本均兼容)

核心实现方法

核心调用SDK提供的ListObjectsVersionsAsync方法,过滤指定对象名的所有版本即可,完整示例代码如下:

using Minio;
using Minio.DataModel;
using Minio.DataModel.Args;

// 初始化MinIO客户端
var minioClient = new MinioClient()
    .WithEndpoint("你的MinIO服务地址:端口")
    .WithCredentials("你的AccessKey", "你的SecretKey")
    .WithSSL(false) // 生产环境建议替换为true启用HTTPS
    .Build();

// 定义查询参数
string bucketName = "目标存储桶名称";
string targetObjectName = "你要查询的对象完整名称";
var allVersions = new List<Item>();

try
{
    // 构造版本列表查询参数
    var listArgs = new ListObjectsVersionsArgs()
        .WithBucket(bucketName)
        .WithPrefix(targetObjectName)
        .WithVersions(true);
    
    // 遍历获取所有版本记录
    await foreach (var item in minioClient.ListObjectsVersionsAsync(listArgs))
    {
        // 过滤掉前缀匹配的其他对象,只保留完全匹配的目标对象版本
        if (item.Key == targetObjectName)
        {
            allVersions.Add(item);
        }
    }

    // 版本信息使用示例
    Console.WriteLine($"目标对象共找到{allVersions.Count}个版本:");
    foreach (var version in allVersions)
    {
        Console.WriteLine($"版本ID: {version.VersionId}, 最后修改时间: {version.LastModified}, 是否为最新版本: {version.IsLatest}, 文件大小: {version.Size}");
    }
}
catch (Exception ex)
{
    Console.WriteLine($"查询失败:{ex.Message}");
}

返回字段说明

每个版本对应的Item对象包含核心属性如下:

  • VersionId:版本唯一标识,后续下载、删除指定版本时需要传入该值
  • IsLatest:布尔值,标识该版本是否为对象的当前最新版本
  • LastModified:该版本的上传/修改时间
  • Size:该版本的文件大小
  • ETag:该版本文件的哈希校验值

内容的提问来源于stack exchange,提问作者Konrad Mieszała

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 11:36:03