.NET Client API参考文档

初始化Minio Client object。

Minio

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

AWS S3

  1. var s3Client =newMinioClient("s3.amazonaws.com",
  2. "YOUR-ACCESSKEYID",
  3. "YOUR-SECRETACCESSKEY"
  4. ).WithSSL();
操作存储桶操作对象Presigned操作存储桶策略
makeBucketgetObjectpresignedGetObjectgetBucketPolicy
listBucketsputObjectpresignedPutObjectsetBucketPolicy
bucketExistscopyObjectpresignedPostPolicysetBucketNotification
removeBucketstatObjectgetBucketNotification
listObjectsremoveObjectremoveAllBucketNotification
listIncompleteUploadsremoveObjects
removeIncompleteUpload

1. 构造函数

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

参数

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

安全访问

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

示例

Minio

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

AWS S3

  1. // 1. public MinioClient(String endpoint)
  2. MinioClient s3Client =newMinioClient("s3.amazonaws.com").WithSSL();
  3. // 2. public MinioClient(String endpoint, String accessKey, String secretKey)
  4. MinioClient s3Client =newMinioClient("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))

创建一个存储桶。

参数

参数类型描述
bucketNamestring存储桶名称。
regionstring可选参数。默认是us-east-1。
cancellationTokenSystem.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))

列出所有的存储桶。

参数类型描述
cancellationTokenSystem.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))

检查存储桶是否存在。

参数

参数类型描述
bucketNamestring存储桶名称。
cancellationTokenSystem.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清空存储桶内的对象。

参数

参数类型描述
bucketNamestring存储桶名称。
cancellationTokenSystem.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))

列出存储桶里的对象。

参数

参数类型描述
bucketNamestring存储桶名称。
prefixstring对象的前缀。
recursivebooltrue代表递归查找,false代表类似文件夹查找,以'/'分隔,不查子文件夹。
cancellationTokenSystem.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))

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

参数

参数类型描述
bucketNamestring存储桶名称。
prefixstring对象的前缀。
recursivebooltrue代表递归查找,false代表类似文件夹查找,以'/'分隔,不查子文件夹。
cancellationTokenSystem.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))

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

参数

参数类型描述
bucketNamestring存储桶名称。
objectPrefixstring该存储桶下的对象前缀
cancellationTokenSystem.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))

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

参数

参数类型描述
bucketNamestring存储桶名称。
objectPrefixstring对象前缀。
PolicyTypePolicyType要设置的策略。
cancellationTokenSystem.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))

给存储桶设置通知。

参数

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

示例

  1. try
  2. {
  3. BucketNotification notification =newBucketNotification();
  4. Arn topicArn =newArn("aws","sns","us-west-1","412334153608","topicminio");
  5. TopicConfig topicConfiguration =newTopicConfig(topicArn);
  6. List<EventType> events =newList<EventType>(){EventType.ObjectCreatedPut,EventType.ObjectCreatedCopy};
  7. topicConfiguration.AddEvents(events);
  8. topicConfiguration.AddFilterPrefix("images");
  9. topicConfiguration.AddFilterSuffix("jpg");
  10. notification.AddTopic(topicConfiguration);
  11. QueueConfig queueConfiguration =newQueueConfig("arn:aws:sqs:us-west-1:482314153608:testminioqueue1");
  12. queueConfiguration.AddEvents(newList<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))

获取存储桶的通知配置。

参数

参数类型描述
bucketNamestring存储桶名称。
cancellationTokenSystem.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))

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

参数

参数类型描述
bucketNamestring存储桶名称。
cancellationTokenSystem.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))

返回对象数据的流。

参数

参数类型描述
bucketNamestring存储桶名称。
objectNamestring存储桶里的对象名称。
callbackAction处理流的回调函数。
cancellationTokenSystem.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都必须传。

参数

参数类型描述
bucketNamestring存储桶名称。
objectNamestring存储桶里的对象名称。
offsetlongoffset 是起始字节的位置。
lengthlonglength是要读取的长度。
callbackAction处理流的回调函数。
cancellationTokenSystem.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))

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

参数

参数类型描述
bucketNameString存储桶名称。
objectNameString存储桶里的对象名称。
fileNameString本地文件路径。
cancellationTokenSystem.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上传对象。

参数

参数类型描述
bucketNamestring存储桶名称。
objectNamestring存储桶里的对象名称。
dataStream要上传的Stream对象。
sizelong流的大小。
contentTypestring文件的Content type,默认是"application/octet-stream"。
metaDataDictionary元数据头信息的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 =newSystem.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))

通过文件上传到对象中。

参数

参数类型描述
bucketNamestring存储桶名称。
objectNamestring存储桶里的对象名称。
fileNamestring要上传的本地文件名。
contentTypestring文件的Content type,默认是"application/octet-stream"。
metadataDictionary元数据头信息的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))

获取对象的元数据。

参数

参数类型描述
bucketNamestring存储桶名称。
objectNamestring存储桶里的对象名称。
cancellationTokenSystem.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指定的对象。

参数

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

示例

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

  1. try
  2. {
  3. CopyConditions copyConditions =newCopyConditions();
  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))

删除一个对象。

参数

参数类型描述
bucketNamestring存储桶名称。
objectNamestring存储桶里的对象名称。
cancellationTokenSystem.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))

删除多个对象。

参数

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

示例

  1. try
  2. {
  3. List<String> objectNames =newLinkedList<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))

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

参数

参数类型描述
bucketNamestring存储桶名称。
objectNamestring存储桶里的对象名称。
cancellationTokenSystem.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天。

参数

参数类型描述
bucketNameString存储桶名称。
objectNameString存储桶里的对象名称。
expiresIntInteger失效时间(以秒为单位),默认是7天,不得大于七天。
reqParamsDictionary额外的响应头信息,支持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天。

参数

参数类型描述
bucketNamestring存储桶名称。
objectNamestring存储桶里的对象名称。
expiresIntint失效时间(以秒为单位),默认是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名称前缀,过期策略。

参数

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

示例

  1. try
  2. {
  3. PostPolicy policy =newPostPolicy();
  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添加应用信息。

参数

参数类型描述
appNamestring执行API请求的应用名称。
appVersionstring执行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