• .NET Client API参考文档
    • 初始化Minio Client object。
    • Minio
    • AWS S3
    • 1. 构造函数
      • Minio
      • AWS S3
    • 2. 操作存储桶
      • MakeBucketAsync(string bucketName, string location="us-east-1")
      • ListBucketsAsync()
      • BucketExistsAsync(string bucketName)
      • RemoveBucketAsync(string bucketName)
      • ListObjectsAsync(string bucketName, string prefix = null, bool recursive = true)
      • ListIncompleteUploads(string bucketName, string prefix, bool recursive)
      • GetPolicyAsync(string bucketName, string objectPrefix)
      • SetPolicyAsync(string bucketName, string objectPrefix, PolicyType policyType)
      • SetBucketNotificationAsync(string bucketName,BucketNotification notification)
      • GetBucketNotificationAsync(string bucketName)
      • RemoveAllBucketNotificationsAsync(string bucketName)
    • 3. 操作对象
      • GetObjectAsync(string bucketName, string objectName, Action callback)
      • GetObjectAsync(string bucketName, string objectName, long offset,long length, Action callback)
      • GetObjectAsync(String bucketName, String objectName, String fileName)
      • PutObjectAsync(string bucketName, string objectName, Stream data, long size, string contentType)
      • PutObjectAsync(string bucketName, string objectName, string filePath, string contentType=null)
      • StatObjectAsync(string bucketName, string objectName)
      • CopyObjectAsync(string bucketName, string objectName, string destBucketName, string destObjectName = null, CopyConditions copyConditions = null)
      • RemoveObjectAsync(string bucketName, string objectName)
      • RemoveObjectAsync(string bucketName, IEnumerable objectsList)
      • RemoveIncompleteUploadAsync(string bucketName, string objectName)
    • 4. Presigned操作
      • PresignedGetObjectAsync(string bucketName, string objectName, int expiresInt, Dictionary reqParams = null);
      • PresignedPutObjectAsync(string bucketName, string objectName, int expiresInt)
      • PresignedPostPolicy(PostPolicy policy)
    • Client Custom Settings
      • SetAppInfo(string appName, tring appVersion)
      • SetTraceOn()
      • SetTraceOff()

    .NET Client API参考文档

    初始化Minio Client object。

    Minio

    1. var minioClient = new MinioClient("play.minio.io:9000",
    2. "Q3AM3UQ867SPQQA43P2F",
    3. "zuf+tfteSlswRu7BJ86wekitnifILbZam1KYY3TG"
    4. ).WithSSL();

    AWS S3

    1. var s3Client = new MinioClient("s3.amazonaws.com",
    2. "YOUR-ACCESSKEYID",
    3. "YOUR-SECRETACCESSKEY"
    4. ).WithSSL();
    操作存储桶 操作对象 Presigned操作 存储桶策略
    makeBucket getObject presignedGetObject getBucketPolicy
    listBuckets putObject presignedPutObject setBucketPolicy
    bucketExists copyObject presignedPostPolicy setBucketNotification
    removeBucket statObject getBucketNotification
    listObjects removeObject removeAllBucketNotification
    listIncompleteUploads removeObjects
    removeIncompleteUpload

    1. 构造函数

    |
    |——-
    |public MinioClient(string endpoint, string accessKey = "", string secretKey = "")
    |使用给定的endpoint创建个一个MinioClient对象。AccessKey、secretKey和region是可选参数,如果为空的话代表匿名访问。该client对象默认使用HTTP进行访问,如果想使用HTTPS,针对client对象链式调用WithSSL()可启用安全的传输协议。

    参数

    参数 类型 描述
    endpoint string endPoint是一个URL,域名,IPv4或者IPv6地址。以下是合法的endpoints:
    s3.amazonaws.com
    play.minio.io:9000
    localhost
    play.minio.io
    accessKey string accessKey类似于用户ID,用于唯一标识你的账户。可选,为空代表匿名访问。
    secretKey string secretKey是你账户的密码。可选,为空代表匿名访问。
    region string 对象存储的region。可选。

    安全访问

    |
    |——-
    |client对象链式调用.WithSSL(),可以启用https。

    示例

    Minio

    1. // 1. public MinioClient(String endpoint)
    2. MinioClient minioClient = new MinioClient("play.minio.io:9000");
    3. // 2. public MinioClient(String endpoint, String accessKey, String secretKey)
    4. MinioClient minioClient = new MinioClient("play.minio.io:9000",
    5. accessKey:"Q3AM3UQ867SPQQA43P2F",
    6. secretKey:"zuf+tfteSlswRu7BJ86wekitnifILbZam1KYY3TG"
    7. ).WithSSL();

    AWS S3

    1. // 1. public MinioClient(String endpoint)
    2. MinioClient s3Client = new MinioClient("s3.amazonaws.com").WithSSL();
    3. // 2. public MinioClient(String endpoint, String accessKey, String secretKey)
    4. MinioClient s3Client = new MinioClient("s3.amazonaws.com:80",
    5. accessKey:"YOUR-ACCESSKEYID",
    6. secretKey:"YOUR-SECRETACCESSKEY").WithSSL();

    2. 操作存储桶

    MakeBucketAsync(string bucketName, string location="us-east-1")

    Task MakeBucketAsync(string bucketName, string location = "us-east-1", CancellationToken cancellationToken = default(CancellationToken))

    创建一个存储桶。

    参数

    参数 类型 描述
    bucketName string 存储桶名称。
    region string 可选参数。默认是us-east-1。
    cancellationToken System.Threading.CancellationToken 可选参数。 默认是default(CancellationToken)
    返回值类型 异常
    Task 列出的异常:
    InvalidBucketNameException : 无效的存储桶名称。
    ConnectionException : 连接异常。
    AccessDeniedException : 拒绝访问。
    RedirectionException : 服务器重定向。
    InternalClientException : 内部错误。

    示例

    1. try
    2. {
    3. // Create bucket if it doesn't exist.
    4. bool found = await minioClient.BucketExistsAsync("mybucket");
    5. if (found)
    6. {
    7. Console.Out.WriteLine("mybucket already exists");
    8. }
    9. else
    10. {
    11. // Create bucket 'my-bucketname'.
    12. await minioClient.MakeBucketAsync("mybucket");
    13. Console.Out.WriteLine("mybucket is created successfully");
    14. }
    15. }
    16. catch (MinioException e)
    17. {
    18. Console.Out.WriteLine("Error occurred: " + e);
    19. }

    ListBucketsAsync()

    Task<ListAllMyBucketsResult> ListBucketsAsync(CancellationToken cancellationToken = default(CancellationToken))

    列出所有的存储桶。

    参数 类型 描述
    cancellationToken System.Threading.CancellationToken 可选参数。默认是default(CancellationToken)
    返回值类型 异常
    Task<ListAllMyBucketsResult> : 包含存储桶类型列表的Task。 列出的异常:
    InvalidBucketNameException : 无效的存储桶名称。
    ConnectionException : 连接异常。
    AccessDeniedException : 拒绝访问。
    InvalidOperationException: xml数据反序列化异常。
    ErrorResponseException : 执行异常。
    InternalClientException : 内部错误。

    示例

    1. try
    2. {
    3. // List buckets that have read access.
    4. var list = await minioClient.ListBucketsAsync();
    5. foreach (Bucket bucket in list.Buckets)
    6. {
    7. Console.Out.WriteLine(bucket.Name + " " + bucket.CreationDateDateTime);
    8. }
    9. }
    10. catch (MinioException e)
    11. {
    12. Console.Out.WriteLine("Error occurred: " + e);
    13. }

    BucketExistsAsync(string bucketName)

    Task<bool> BucketExistsAsync(string bucketName, CancellationToken cancellationToken = default(CancellationToken))

    检查存储桶是否存在。

    参数

    参数 类型 描述
    bucketName string 存储桶名称。
    cancellationToken System.Threading.CancellationToken 可选参数。 默认是default(CancellationToken)
    返回值类型 异常
    Task<bool> : 如果存储桶存在的话则是true。 列出的异常:
    InvalidBucketNameException : 无效的存储桶名称。
    ConnectionException : 连接异常。
    AccessDeniedException : 拒绝访问。
    ErrorResponseException : 执行异常。
    InternalClientException : 内部错误。

    示例

    1. try
    2. {
    3. // Check whether 'my-bucketname' exists or not.
    4. bool found = await minioClient.BucketExistsAsync(bucketName);
    5. Console.Out.WriteLine("bucket-name " + ((found == true) ? "exists" : "does not exist"));
    6. }
    7. catch (MinioException e)
    8. {
    9. Console.WriteLine("[Bucket] Exception: {0}", e);
    10. }

    RemoveBucketAsync(string bucketName)

    Task RemoveBucketAsync(string bucketName, CancellationToken cancellationToken = default(CancellationToken))

    删除一个存储桶

    注意: - removeBucket不会删除存储桶中的对象,你需要调用removeObject API清空存储桶内的对象。

    参数

    参数 类型 描述
    bucketName string 存储桶名称。
    cancellationToken System.Threading.CancellationToken 可选参数。默认是default(CancellationToken)
    返回值类型 异常
    Task 列出的异常:
    InvalidBucketNameException : 无效的存储桶名称。
    ConnectionException : 连接异常。
    AccessDeniedException : 拒绝访问。
    ErrorResponseException : 执行异常。
    InternalClientException : 内部错误。
    BucketNotFoundException : 存储桶不存在。

    示例

    1. try
    2. {
    3. // Check if my-bucket exists before removing it.
    4. bool found = await minioClient.BucketExistsAsync("mybucket");
    5. if (found)
    6. {
    7. // Remove bucket my-bucketname. This operation will succeed only if the bucket is empty.
    8. await minioClient.RemoveBucketAsync("mybucket");
    9. Console.Out.WriteLine("mybucket is removed successfully");
    10. }
    11. else
    12. {
    13. Console.Out.WriteLine("mybucket does not exist");
    14. }
    15. }
    16. catch(MinioException e)
    17. {
    18. Console.Out.WriteLine("Error occurred: " + e);
    19. }

    ListObjectsAsync(string bucketName, string prefix = null, bool recursive = true)

    IObservable<Item> ListObjectsAsync(string bucketName, string prefix = null, bool recursive = true, CancellationToken cancellationToken = default(CancellationToken))

    列出存储桶里的对象。

    参数

    参数 类型 描述
    bucketName string 存储桶名称。
    prefix string 对象的前缀。
    recursive bool true代表递归查找,false代表类似文件夹查找,以'/'分隔,不查子文件夹。
    cancellationToken System.Threading.CancellationToken 可选参数。默认是default(CancellationToken)
    返回值类型 异常
    IObservable<Item>:an Observable of Items. None

    示例

    1. try
    2. {
    3. // Check whether 'mybucket' exists or not.
    4. bool found = minioClient.BucketExistsAsync("mybucket");
    5. if (found)
    6. {
    7. // List objects from 'my-bucketname'
    8. IObservable<Item> observable = minioClient.ListObjectsAsync("mybucket", "prefix", true);
    9. IDisposable subscription = observable.Subscribe(
    10. item => Console.WriteLine("OnNext: {0}", item.Key),
    11. ex => Console.WriteLine("OnError: {0}", ex.Message),
    12. () => Console.WriteLine("OnComplete: {0}"));
    13. }
    14. else
    15. {
    16. Console.Out.WriteLine("mybucket does not exist");
    17. }
    18. }
    19. catch (MinioException e)
    20. {
    21. Console.Out.WriteLine("Error occurred: " + e);
    22. }

    ListIncompleteUploads(string bucketName, string prefix, bool recursive)

    IObservable<Upload> ListIncompleteUploads(string bucketName, string prefix, bool recursive, CancellationToken cancellationToken = default(CancellationToken))

    列出存储桶中未完整上传的对象。

    参数

    参数 类型 描述
    bucketName string 存储桶名称。
    prefix string 对象的前缀。
    recursive bool true代表递归查找,false代表类似文件夹查找,以'/'分隔,不查子文件夹。
    cancellationToken System.Threading.CancellationToken 可选参数。默认是default(CancellationToken)
    返回值类型 异常
    IObservable<Upload> None

    示例

    1. try
    2. {
    3. // Check whether 'mybucket' exist or not.
    4. bool found = minioClient.BucketExistsAsync("mybucket");
    5. if (found)
    6. {
    7. // List all incomplete multipart upload of objects in 'mybucket'
    8. IObservable<Upload> observable = minioClient.ListIncompleteUploads("mybucket", "prefix", true);
    9. IDisposable subscription = observable.Subscribe(
    10. item => Console.WriteLine("OnNext: {0}", item.Key),
    11. ex => Console.WriteLine("OnError: {0}", ex.Message),
    12. () => Console.WriteLine("OnComplete: {0}"));
    13. }
    14. else
    15. {
    16. Console.Out.WriteLine("mybucket does not exist");
    17. }
    18. }
    19. catch (MinioException e)
    20. {
    21. Console.Out.WriteLine("Error occurred: " + e);
    22. }

    GetPolicyAsync(string bucketName, string objectPrefix)

    Task<PolicyType> GetPolicyAsync(string bucketName, string objectPrefix, CancellationToken cancellationToken = default(CancellationToken))

    获取存储桶或者对象前缀的访问权限。

    参数

    参数 类型 描述
    bucketName string 存储桶名称。
    objectPrefix string 该存储桶下的对象前缀
    cancellationToken System.Threading.CancellationToken 可选参数。默认是default(CancellationToken)
    返回值类型 异常
    Task<PolicyType>: 指定存储桶和对象前缀的存储桶策略。 列出的异常:
    InvalidBucketNameException : 无效的存储桶名称。
    InvalidObjectPrefixException : 无效的对象前缀。
    ConnectionException : 连接异常。
    AccessDeniedException : 拒绝访问。
    InternalClientException : 内部错误。
    BucketNotFoundException : 存储桶不存在。

    示例

    1. try
    2. {
    3. PolicyType policy = await minioClient.GetPolicyAsync("myBucket", objectPrefix:"downloads");
    4. Console.Out.WriteLine("Current policy: " + policy.GetType().ToString());
    5. }
    6. catch (MinioException e)
    7. {
    8. Console.Out.WriteLine("Error occurred: " + e);
    9. }

    SetPolicyAsync(string bucketName, string objectPrefix, PolicyType policyType)

    Task SetPolicyAsync(string bucketName, string objectPrefix, PolicyType policyType, CancellationToken cancellationToken = default(CancellationToken))

    针对存储桶和对象前缀设置访问策略。

    参数

    参数 类型 描述
    bucketName string 存储桶名称。
    objectPrefix string 对象前缀。
    PolicyType PolicyType 要设置的策略。
    cancellationToken System.Threading.CancellationToken 可选参数。默认是default(CancellationToken)
    返回值类型 异常
    Task 列出的异常:
    InvalidBucketNameException : 无效的存储桶名称。
    ConnectionException : 连接异常。
    InternalClientException : 内部错误。
    InvalidBucketNameException : 无效的存储桶名称。
    InvalidObjectPrefixException : 无效的对象前缀。

    示例

    1. try
    2. {
    3. await minioClient.SetPolicyAsync("myBucket", "uploads",PolicyType.WRITE_ONLY);
    4. }
    5. catch (MinioException e)
    6. {
    7. Console.Out.WriteLine("Error occurred: " + e);
    8. }

    SetBucketNotificationAsync(string bucketName,BucketNotification notification)

    Task SetBucketNotificationAsync(string bucketName, BucketNotification notification, CancellationToken cancellationToken = default(CancellationToken))

    给存储桶设置通知。

    参数

    参数 类型 描述
    bucketName string 存储桶名称。
    notification BucketNotification 要设置的通知。
    cancellationToken System.Threading.CancellationToken 可选参数。默认是default(CancellationToken)
    返回值类型 异常
    Task 列出的异常:
    ConnectionException : 连接异常。
    InternalClientException : 内部错误。
    InvalidBucketNameException : 无效的存储桶名称。
    InvalidOperationException: 通知对象序列化异常。

    示例

    1. try
    2. {
    3. BucketNotification notification = new BucketNotification();
    4. Arn topicArn = new Arn("aws", "sns", "us-west-1", "412334153608", "topicminio");
    5. TopicConfig topicConfiguration = new TopicConfig(topicArn);
    6. List<EventType> events = new List<EventType>(){ EventType.ObjectCreatedPut , EventType.ObjectCreatedCopy };
    7. topicConfiguration.AddEvents(events);
    8. topicConfiguration.AddFilterPrefix("images");
    9. topicConfiguration.AddFilterSuffix("jpg");
    10. notification.AddTopic(topicConfiguration);
    11. QueueConfig queueConfiguration = new QueueConfig("arn:aws:sqs:us-west-1:482314153608:testminioqueue1");
    12. queueConfiguration.AddEvents(new List<EventType>() { EventType.ObjectCreatedCompleteMultipartUpload });
    13. notification.AddQueue(queueConfiguration);
    14. await minio.SetBucketNotificationsAsync(bucketName,
    15. notification);
    16. Console.Out.WriteLine("Notifications set for the bucket " + bucketName + " successfully");
    17. }
    18. catch (MinioException e)
    19. {
    20. Console.Out.WriteLine("Error occurred: " + e);
    21. }

    GetBucketNotificationAsync(string bucketName)

    Task<BucketNotification> GetBucketNotificationAsync(string bucketName, CancellationToken cancellationToken = default(CancellationToken))

    获取存储桶的通知配置。

    参数

    参数 类型 描述
    bucketName string 存储桶名称。
    cancellationToken System.Threading.CancellationToken 可选参数。默认是default(CancellationToken)
    返回值类型 异常
    Task<BucketNotification>: 存储桶的当前通知配置。 列出的异常:
    InvalidBucketNameException : 无效的存储桶名称。
    ConnectionException : 连接异常。
    AccessDeniedException : 拒绝访问。
    InternalClientException : 内部错误。
    BucketNotFoundException : 存储桶不存在。
    InvalidOperationException: xml数据反序列化异常。

    示例

    1. try
    2. {
    3. BucketNotification notifications = await minioClient.GetBucketNotificationAsync(bucketName);
    4. Console.Out.WriteLine("Notifications is " + notifications.ToXML());
    5. }
    6. catch (MinioException e)
    7. {
    8. Console.Out.WriteLine("Error occurred: " + e);
    9. }

    RemoveAllBucketNotificationsAsync(string bucketName)

    Task RemoveAllBucketNotificationsAsync(string bucketName, CancellationToken cancellationToken = default(CancellationToken))

    删除存储桶上所有配置的通知。

    参数

    参数 类型 描述
    bucketName string 存储桶名称。
    cancellationToken System.Threading.CancellationToken 可选参数。默认是default(CancellationToken)
    返回值类型 异常
    `Task: 列出的异常:
    InvalidBucketNameException : 无效的存储桶名称。
    ConnectionException : 连接异常。
    AccessDeniedException : 拒绝访问。
    InternalClientException : 内部错误。
    BucketNotFoundException : 存储桶不存在。
    InvalidOperationException: xml数据序列化异常。

    示例

    1. try
    2. {
    3. await minioClient.RemoveAllBucketNotificationsAsync(bucketName);
    4. Console.Out.WriteLine("Notifications successfully removed from the bucket " + bucketName);
    5. }
    6. catch (MinioException e)
    7. {
    8. Console.Out.WriteLine("Error occurred: " + e);
    9. }

    3. 操作对象

    GetObjectAsync(string bucketName, string objectName, Action callback)

    Task GetObjectAsync(string bucketName, string objectName, Action<Stream> callback, CancellationToken cancellationToken = default(CancellationToken))

    返回对象数据的流。

    参数

    参数 类型 描述
    bucketName string 存储桶名称。
    objectName string 存储桶里的对象名称。
    callback Action 处理流的回调函数。
    cancellationToken System.Threading.CancellationToken 可选参数。默认是default(CancellationToken)
    返回值类型 异常
    Task: Task回调,返回含有对象数据的InputStream。 列出的异常:
    InvalidBucketNameException : 无效的存储桶名称。
    ConnectionException : 连接异常。
    InternalClientException : 内部错误。

    示例

    1. try
    2. {
    3. // Check whether the object exists using statObject().
    4. // If the object is not found, statObject() throws an exception,
    5. // else it means that the object exists.
    6. // Execution is successful.
    7. await minioClient.StatObjectAsync("mybucket", "myobject");
    8. // Get input stream to have content of 'my-objectname' from 'my-bucketname'
    9. await minioClient.GetObjectAsync("mybucket", "myobject",
    10. (stream) =>
    11. {
    12. stream.CopyTo(Console.OpenStandardOutput());
    13. });
    14. }
    15. catch (MinioException e)
    16. {
    17. Console.Out.WriteLine("Error occurred: " + e);
    18. }

    GetObjectAsync(string bucketName, string objectName, long offset,long length, Action callback)

    Task GetObjectAsync(string bucketName, string objectName, long offset, long length, Action<Stream> callback, CancellationToken cancellationToken = default(CancellationToken))

    下载对象指定区域的字节数组做为流。offset和length都必须传。

    参数

    参数 类型 描述
    bucketName string 存储桶名称。
    objectName string 存储桶里的对象名称。
    offset long offset 是起始字节的位置。
    length long length是要读取的长度。
    callback Action 处理流的回调函数。
    cancellationToken System.Threading.CancellationToken 可选参数。默认是default(CancellationToken)
    返回值类型 异常
    Task: Task回调,返回含有对象数据的InputStream。 列出的异常:
    InvalidBucketNameException : 无效的存储桶名称。
    ConnectionException : 连接异常。
    InternalClientException : 内部错误。

    示例

    1. try
    2. {
    3. // Check whether the object exists using statObject().
    4. // If the object is not found, statObject() throws an exception,
    5. // else it means that the object exists.
    6. // Execution is successful.
    7. await minioClient.StatObjectAsync("mybucket", "myobject");
    8. // Get input stream to have content of 'my-objectname' from 'my-bucketname'
    9. await minioClient.GetObjectAsync("mybucket", "myobject", 1024L, 10L,
    10. (stream) =>
    11. {
    12. stream.CopyTo(Console.OpenStandardOutput());
    13. });
    14. }
    15. catch (MinioException e)
    16. {
    17. Console.Out.WriteLine("Error occurred: " + e);
    18. }

    GetObjectAsync(String bucketName, String objectName, String fileName)

    Task GetObjectAsync(string bucketName, string objectName, string fileName, CancellationToken cancellationToken = default(CancellationToken))

    下载并将文件保存到本地文件系统。

    参数

    参数 类型 描述
    bucketName String 存储桶名称。
    objectName String 存储桶里的对象名称。
    fileName String 本地文件路径。
    cancellationToken System.Threading.CancellationToken 可选参数。默认是default(CancellationToken)
    返回值类型 异常
    Task 列出的异常:
    InvalidBucketNameException : 无效的存储桶名称。
    ConnectionException : 连接异常。
    InternalClientException : 内部错误。

    示例

    1. try
    2. {
    3. // Check whether the object exists using statObjectAsync().
    4. // If the object is not found, statObjectAsync() throws an exception,
    5. // else it means that the object exists.
    6. // Execution is successful.
    7. await minioClient.StatObjectAsync("mybucket", "myobject");
    8. // Gets the object's data and stores it in photo.jpg
    9. await minioClient.GetObjectAsync("mybucket", "myobject", "photo.jpg");
    10. }
    11. catch (MinioException e)
    12. {
    13. Console.Out.WriteLine("Error occurred: " + e);
    14. }

    PutObjectAsync(string bucketName, string objectName, Stream data, long size, string contentType)

    Task PutObjectAsync(string bucketName, string objectName, Stream data, long size, string contentType,Dictionary<string,string> metaData=null, CancellationToken cancellationToken = default(CancellationToken))

    通过Stream上传对象。

    参数

    参数 类型 描述
    bucketName string 存储桶名称。
    objectName string 存储桶里的对象名称。
    data Stream 要上传的Stream对象。
    size long 流的大小。
    contentType string 文件的Content type,默认是"application/octet-stream"。
    metaData Dictionary 元数据头信息的Dictionary对象,默认是null。

    | cancellationToken| System.Threading.CancellationToken | 可选参数。默认是default(CancellationToken) |

    返回值类型 异常
    Task 列出的异常:
    InvalidBucketNameException : 无效的存储桶名称。
    ConnectionException : 连接异常。
    InternalClientException : 内部错误。
    EntityTooLargeException: 要上传的大小超过最大允许值。
    UnexpectedShortReadException: 读取的数据大小比指定的size要小。
    ArgumentNullException: Stream为null。

    示例

    单个对象的最大大小限制在5TB。putObject在对象大于5MiB时,自动使用multiple parts方式上传。这样,当上传失败时,客户端只需要上传未成功的部分即可(类似断点上传)。上传的对象使用MD5SUM签名进行完整性验证。

    1. try
    2. {
    3. byte[] bs = File.ReadAllBytes(fileName);
    4. System.IO.MemoryStream filestream = new System.IO.MemoryStream(bs);
    5. await minio.PutObjectAsync("mybucket",
    6. "island.jpg",
    7. filestream,
    8. filestream.Length,
    9. "application/octet-stream");
    10. Console.Out.WriteLine("island.jpg is uploaded successfully");
    11. }
    12. catch(MinioException e)
    13. {
    14. Console.Out.WriteLine("Error occurred: " + e);
    15. }

    PutObjectAsync(string bucketName, string objectName, string filePath, string contentType=null)

    Task PutObjectAsync(string bucketName, string objectName, string filePath, string contentType=null,Dictionary<string,string> metaData=null, CancellationToken cancellationToken = default(CancellationToken))

    通过文件上传到对象中。

    参数

    参数 类型 描述
    bucketName string 存储桶名称。
    objectName string 存储桶里的对象名称。
    fileName string 要上传的本地文件名。
    contentType string 文件的Content type,默认是"application/octet-stream"。
    metadata Dictionary 元数据头信息的Dictionary对象,默认是null。

    | cancellationToken| System.Threading.CancellationToken | 可选参数。默认是default(CancellationToken) |

    返回值类型 异常
    Task 列出的异常:
    InvalidBucketNameException : 无效的存储桶名称。
    ConnectionException : 连接异常。
    InternalClientException : 内部错误。
    EntityTooLargeException: 要上传的大小超过最大允许值。

    示例

    单个对象的最大大小限制在5TB。putObject在对象大于5MiB时,自动使用multiple parts方式上传。这样,当上传失败时,客户端只需要上传未成功的部分即可(类似断点上传)。上传的对象使用MD5SUM签名进行完整性验证。

    1. try
    2. {
    3. await minio.PutObjectAsync("mybucket", "island.jpg", "/mnt/photos/island.jpg",contentType: "application/octet-stream");
    4. Console.Out.WriteLine("island.jpg is uploaded successfully");
    5. }
    6. catch(MinioException e)
    7. {
    8. Console.Out.WriteLine("Error occurred: " + e);
    9. }

    StatObjectAsync(string bucketName, string objectName)

    Task<ObjectStat> StatObjectAsync(string bucketName, string objectName, CancellationToken cancellationToken = default(CancellationToken))

    获取对象的元数据。

    参数

    参数 类型 描述
    bucketName string 存储桶名称。
    objectName string 存储桶里的对象名称。
    cancellationToken System.Threading.CancellationToken 可选参数。默认是default(CancellationToken)
    返回值类型 异常
    Task<ObjectStat>: Populated object meta data. 列出的异常:
    InvalidBucketNameException : 无效的存储桶名称。
    ConnectionException : 连接异常。
    InternalClientException : 内部错误。

    示例

    1. try
    2. {
    3. // Get the metadata of the object.
    4. ObjectStat objectStat = await minioClient.StatObjectAsync("mybucket", "myobject");
    5. Console.Out.WriteLine(objectStat);
    6. }
    7. catch(MinioException e)
    8. {
    9. Console.Out.WriteLine("Error occurred: " + e);
    10. }

    CopyObjectAsync(string bucketName, string objectName, string destBucketName, string destObjectName = null, CopyConditions copyConditions = null)

    Task<CopyObjectResult> CopyObjectAsync(string bucketName, string objectName, string destBucketName, string destObjectName = null, CopyConditions copyConditions = null, CancellationToken cancellationToken = default(CancellationToken))

    从objectName指定的对象中将数据拷贝到destObjectName指定的对象。

    参数

    参数 类型 描述
    bucketName string 源存储桶名称。
    objectName string 源存储桶中的源对象名称。
    destBucketName string 目标存储桶名称。
    destObjectName string 要创建的目标对象名称,如果为空,默认为源对象名称。
    copyConditions CopyConditions 拷贝操作的一些条件Map。
    cancellationToken System.Threading.CancellationToken 可选参数。默认是default(CancellationToken)
    返回值类型 异常
    Task 列出的异常:
    InvalidBucketNameException : 无效的存储桶名称。
    ConnectionException : 连接异常。
    InternalClientException : 内部错误。
    ArgumentException : 存储桶不存在。

    示例

    本API执行了一个服务端的拷贝操作。

    1. try
    2. {
    3. CopyConditions copyConditions = new CopyConditions();
    4. copyConditions.setMatchETagNone("TestETag");
    5. await minioClient.CopyObjectAsync("mybucket", "island.jpg", "mydestbucket", "processed.png", copyConditions);
    6. Console.Out.WriteLine("island.jpg is uploaded successfully");
    7. }
    8. catch(MinioException e)
    9. {
    10. Console.Out.WriteLine("Error occurred: " + e);
    11. }

    RemoveObjectAsync(string bucketName, string objectName)

    Task RemoveObjectAsync(string bucketName, string objectName, CancellationToken cancellationToken = default(CancellationToken))

    删除一个对象。

    参数

    参数 类型 描述
    bucketName string 存储桶名称。
    objectName string 存储桶里的对象名称。
    cancellationToken System.Threading.CancellationToken 可选参数。默认是default(CancellationToken)
    返回值类型 异常
    Task 列出的异常:
    InvalidBucketNameException : 无效的存储桶名称。
    ConnectionException : 连接异常。
    InternalClientException : 内部错误。

    示例

    1. try
    2. {
    3. // Remove objectname from the bucket my-bucketname.
    4. await minioClient.RemoveObjectAsync("mybucket", "myobject");
    5. Console.Out.WriteLine("successfully removed mybucket/myobject");
    6. }
    7. catch (MinioException e)
    8. {
    9. Console.Out.WriteLine("Error: " + e);
    10. }

    RemoveObjectAsync(string bucketName, IEnumerable objectsList)

    Task<IObservable<DeleteError>> RemoveObjectAsync(string bucketName, IEnumerable<string> objectsList, CancellationToken cancellationToken = default(CancellationToken))

    删除多个对象。

    参数

    参数 类型 描述
    bucketName string 存储桶名称。
    objectsList IEnumerable 含有多个对象名称的IEnumerable。
    cancellationToken System.Threading.CancellationToken 可选参数。默认是default(CancellationToken)
    返回值类型 异常
    Task 列出的异常:
    InvalidBucketNameException : 无效的存储桶名称。
    ConnectionException : 连接异常。
    InternalClientException : 内部错误。

    示例

    1. try
    2. {
    3. List<String> objectNames = new LinkedList<String>();
    4. objectNames.add("my-objectname1");
    5. objectNames.add("my-objectname2");
    6. objectNames.add("my-objectname3");
    7. // Remove list of objects in objectNames from the bucket bucketName.
    8. IObservable<DeleteError> observable = await minio.RemoveObjectAsync(bucketName, objectNames);
    9. IDisposable subscription = observable.Subscribe(
    10. deleteError => Console.WriteLine("Object: {0}", deleteError.Key),
    11. ex => Console.WriteLine("OnError: {0}", ex),
    12. () =>
    13. {
    14. Console.WriteLine("Listed all delete errors for remove objects on " + bucketName + "\n");
    15. });
    16. }
    17. catch (MinioException e)
    18. {
    19. Console.Out.WriteLine("Error: " + e);
    20. }

    RemoveIncompleteUploadAsync(string bucketName, string objectName)

    Task RemoveIncompleteUploadAsync(string bucketName, string objectName, CancellationToken cancellationToken = default(CancellationToken))

    删除一个未完整上传的对象。

    参数

    参数 类型 描述
    bucketName string 存储桶名称。
    objectName string 存储桶里的对象名称。
    cancellationToken System.Threading.CancellationToken 可选参数。默认是default(CancellationToken)
    返回值类型 异常
    Task 列出的异常:
    InvalidBucketNameException : 无效的存储桶名称。
    ConnectionException : 连接异常。
    InternalClientException : 内部错误。

    示例

    1. try
    2. {
    3. // Removes partially uploaded objects from buckets.
    4. await minioClient.RemoveIncompleteUploadAsync("mybucket", "myobject");
    5. Console.Out.WriteLine("successfully removed all incomplete upload session of my-bucketname/my-objectname");
    6. }
    7. catch(MinioException e)
    8. {
    9. Console.Out.WriteLine("Error occurred: " + e);
    10. }

    4. Presigned操作

    PresignedGetObjectAsync(string bucketName, string objectName, int expiresInt, Dictionary reqParams = null);

    Task<string> PresignedGetObjectAsync(string bucketName, string objectName, int expiresInt, Dictionary<string,string> reqParams = null)

    生成一个给HTTP GET请求用的presigned URL。浏览器/移动端的客户端可以用这个URL进行下载,即使其所在的存储桶是私有的。这个presigned URL可以设置一个失效时间,默认值是7天。

    参数

    参数 类型 描述
    bucketName String 存储桶名称。
    objectName String 存储桶里的对象名称。
    expiresInt Integer 失效时间(以秒为单位),默认是7天,不得大于七天。
    reqParams Dictionary 额外的响应头信息,支持response-expires、response-content-type、response-cache-control、response-content-disposition。
    返回值类型 异常
    Task<string> : string包含可下载该对象的URL。 列出的异常:
    InvalidBucketNameException : 无效的存储桶名称。
    ConnectionException : 连接异常。
    InvalidExpiryRangeException : 无效的失效时间。

    示例

    1. try
    2. {
    3. String url = await minioClient.PresignedGetObjectAsync("mybucket", "myobject", 60 * 60 * 24);
    4. Console.Out.WriteLine(url);
    5. }
    6. catch(MinioException e)
    7. {
    8. Console.Out.WriteLine("Error occurred: " + e);
    9. }

    PresignedPutObjectAsync(string bucketName, string objectName, int expiresInt)

    Task<string> PresignedPutObjectAsync(string bucketName, string objectName, int expiresInt)

    生成一个给HTTP PUT请求用的presigned URL。浏览器/移动端的客户端可以用这个URL进行上传,即使其所在的存储桶是私有的。这个presigned URL可以设置一个失效时间,默认值是7天。

    参数

    参数 类型 描述
    bucketName string 存储桶名称。
    objectName string 存储桶里的对象名称。
    expiresInt int 失效时间(以秒为单位),默认是7天,不得大于七天。
    返回值类型 异常
    Task<string> : string包含可下载该对象的URL。 列出的异常:
    InvalidBucketNameException : 无效的存储桶名称。
    InvalidKeyException : 无效的access key或secret key。
    ConnectionException : 连接异常。
    InvalidExpiryRangeException : 无效的失效时间。

    示例

    1. try
    2. {
    3. String url = await minioClient.PresignedPutObjectAsync("mybucket", "myobject", 60 * 60 * 24);
    4. Console.Out.WriteLine(url);
    5. }
    6. catch(MinioException e)
    7. {
    8. Console.Out.WriteLine("Error occurred: " + e);
    9. }

    PresignedPostPolicy(PostPolicy policy)

    Task<Dictionary<string, string>> PresignedPostPolicyAsync(PostPolicy policy)

    允许给POST请求的presigned URL设置策略,比如接收对象上传的存储桶名称的策略,key名称前缀,过期策略。

    参数

    参数 类型 描述
    PostPolicy PostPolicy 对象的post策略。
    返回值类型 异常
    Task<Dictionary<string,string>>: string的键值对,用于构造表单数据。 列出的异常:
    InvalidBucketNameException : 无效的存储桶名称。
    ConnectionException : 连接异常。
    NoSuchAlgorithmException : 在做签名计算时找不到指定的算法。

    示例

    1. try
    2. {
    3. PostPolicy policy = new PostPolicy();
    4. policy.SetContentType("image/png");
    5. policy.SetUserMetadata("custom", "user");
    6. DateTime expiration = DateTime.UtcNow;
    7. policy.SetExpires(expiration.AddDays(10));
    8. policy.SetKey("my-objectname");
    9. policy.SetBucket("my-bucketname");
    10. Dictionary<string, string> formData = minioClient.Api.PresignedPostPolicy(policy);
    11. string curlCommand = "curl ";
    12. foreach (KeyValuePair<string, string> pair in formData)
    13. {
    14. curlCommand = curlCommand + " -F " + pair.Key + "=" + pair.Value;
    15. }
    16. curlCommand = curlCommand + " -F file=@/etc/bashrc https://s3.amazonaws.com/my-bucketname";
    17. Console.Out.WriteLine(curlCommand);
    18. }
    19. catch(MinioException e)
    20. {
    21. Console.Out.WriteLine("Error occurred: " + e);
    22. }

    Client Custom Settings

    SetAppInfo(string appName, tring appVersion)

    给User-Agent添加应用信息。

    参数

    参数 类型 描述
    appName string 执行API请求的应用名称。
    appVersion string 执行API请求的应用版本。

    示例

    1. // Set Application name and version to be used in subsequent API requests.
    2. minioClient.SetAppInfo("myCloudApp", "1.0.0")

    SetTraceOn()

    开启HTTP tracing,trace日志会输出到stdout。

    示例

    1. // Set HTTP tracing on.
    2. minioClient.SetTraceOn()

    SetTraceOff()

    Disables HTTP tracing.

    示例

    1. // Sets HTTP tracing off.
    2. minioClient.SetTraceOff()

    原文: https://docs.minio.io/cn/dotnet-client-api-reference.html