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

如何使用C#在MinIO中创建空文件夹/对象

在MinIO .NET客户端创建空文件夹的正确实现

MinIO本身没有真正的文件夹概念,是通过创建以/结尾的空对象来模拟文件夹结构。你之前的代码报错是因为.NET客户端对空对象的参数处理和Java端略有差异,以下是可行的实现方式:

方法一:使用简化的PutObjectAsync重载

public async Task CreateFolderAsync(string path, string folderName)
{
    // 拼接完整的文件夹路径(必须以/结尾)
    var folderObjectPath = $"{path.TrimEnd('/')}/{folderName}/";
    // 直接调用重载方法,传入空流和大小0
    await _minioClient.PutObjectAsync(
        bucketName: _configuration["MinIO:Bucket"],
        objectName: folderObjectPath,
        data: new MemoryStream(),
        size: 0
    ).ConfigureAwait(false);
}

方法二:使用PutObjectArgs构建器(修正你的原代码)

如果坚持使用PutObjectArgs,需要确保流和大小参数匹配,还可以添加类型标识明确标记为文件夹:

public async Task CreateFolderAsync(string path, string folderName)
{
    var args = new PutObjectArgs()
        .WithBucket(_configuration["MinIO:Bucket"])
        .WithObject($"{path.TrimEnd('/')}/{folderName}/")
        .WithStreamData(new MemoryStream())
        .WithObjectSize(0)
        .WithContentType("application/x-directory"); // 可选,明确标识为文件夹类型

    await _minioClient.PutObjectAsync(args).ConfigureAwait(false);
}

关键说明

  • 必须保证对象路径以/结尾,MinIO才会将其识别为文件夹展示
  • .NET客户端要求空对象必须明确指定size=0,而Java客户端允许用-1让系统自动推断,这是两者的核心差异

内容的提问来源于stack exchange,提问作者x1m

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 18:09:57