.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