.NET Client API Reference Slack

Initialize Minio Client object.

Minio

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

AWS S3

var s3Client = new MinioClient("s3.amazonaws.com",  
                                   "YOUR-ACCESSKEYID",
                                   "YOUR-SECRETACCESSKEY"
                               ).WithSSL();
Bucket operations Object operations Presigned operations Bucket Policy Operations
makeBucket getObject presignedGetObject getBucketPolicy
listBuckets putObject presignedPutObject setBucketPolicy
bucketExists copyObject presignedPostPolicy setBucketNotification
removeBucket statObject getBucketNotification
listObjects removeObject removeAllBucketNotification
listIncompleteUploads removeObjects
removeIncompleteUpload

1. Constructors

public MinioClient(string endpoint, string accessKey = "", string secretKey = "")
Creates Minio client object with given endpoint.AccessKey,secretKey and region are optional parameters,and can be omitted for anonymous access.
The client object uses Http access by default. To use Https, chain method WithSSL() to client object to use secure transfer protocol

Parameters

Param Type Description
endpoint string endPoint is an URL, domain name, IPv4 address or IPv6 address.Valid endpoints are listed below:
s3.amazonaws.com
play.minio.io:9000
localhost
play.minio.io
accessKey string accessKey is like user-id that uniquely identifies your account.This field is optional and can be omitted for anonymous access.
secretKey string secretKey is the password to your account.This field is optional and can be omitted for anonymous access.
region string region to which calls should be made.This field is optional and can be omitted.

Secure Access

Chain .WithSSL() to Minio Client object to use https instead of http.

Example

Minio

// 1. public MinioClient(String endpoint)
MinioClient minioClient = new MinioClient("play.minio.io:9000");

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

AWS S3

// 1. public MinioClient(String endpoint)
MinioClient s3Client = new MinioClient("s3.amazonaws.com").WithSSL();

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

2. Bucket operations

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

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

Creates a new bucket.

Parameters

Param Type Description
bucketName string Name of the bucket
region string Optional parameter. Defaults to us-east-1 for AWS requests
cancellationToken System.Threading.CancellationToken Optional parameter. Defaults to default(CancellationToken)
Return Type Exceptions
Task Listed Exceptions:
InvalidBucketNameException : upon invalid bucket name
ConnectionException : upon connection error
AccessDeniedException : upon access denial
RedirectionException : upon redirection by server
InternalClientException : upon internal library error

Example

try 
{
   // Create bucket if it doesn't exist.
   bool found = await minioClient.BucketExistsAsync("mybucket");
   if (found) 
   {
      Console.Out.WriteLine("mybucket already exists");
   } 
   else 
   {
     // Create bucket 'my-bucketname'.
     await minioClient.MakeBucketAsync("mybucket");
     Console.Out.WriteLine("mybucket is created successfully");
   }
} 
catch (MinioException e) 
{
   Console.Out.WriteLine("Error occurred: " + e);
}

ListBucketsAsync()

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

Lists all buckets.

Param Type Description
cancellationToken System.Threading.CancellationToken Optional parameter. Defaults to default(CancellationToken)
Return Type Exceptions
Task<ListAllMyBucketsResult> : Task with List of bucket type. Listed Exceptions:
InvalidBucketNameException : upon invalid bucket name
ConnectionException : upon connection error
AccessDeniedException : upon access denial
InvalidOperationException: upon unsuccessful deserialization of xml data
ErrorResponseException : upon unsuccessful execution
InternalClientException : upon internal library error

Example

try 
{
    // List buckets that have read access.
    var list = await minioClient.ListBucketsAsync();
    foreach (Bucket bucket in list.Buckets)
    {
        Console.Out.WriteLine(bucket.Name + " " + bucket.CreationDateDateTime);
    }
} 
catch (MinioException e) 
{
    Console.Out.WriteLine("Error occurred: " + e);
}

BucketExistsAsync(string bucketName)

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

Checks if a bucket exists.

Parameters

Param Type Description
bucketName string Name of the bucket.
cancellationToken System.Threading.CancellationToken Optional parameter. Defaults to default(CancellationToken)
Return Type Exceptions
Task<bool> : true if the bucket exists Listed Exceptions:
InvalidBucketNameException : upon invalid bucket name
ConnectionException : upon connection error
AccessDeniedException : upon access denial
ErrorResponseException : upon unsuccessful execution
InternalClientException : upon internal library error

Example

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

RemoveBucketAsync(string bucketName)

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

Removes a bucket.

NOTE: - removeBucket does not delete the objects inside the bucket. The objects need to be deleted using the removeObject API.

Parameters

Param Type Description
bucketName string Name of the bucket
cancellationToken System.Threading.CancellationToken Optional parameter. Defaults to default(CancellationToken)
Return Type Exceptions
Task Listed Exceptions:
InvalidBucketNameException : upon invalid bucket name
ConnectionException : upon connection error
AccessDeniedException : upon access denial
ErrorResponseException : upon unsuccessful execution
InternalClientException : upon internal library error
BucketNotFoundException : upon missing bucket

Example

try 
{
    // Check if my-bucket exists before removing it.
    bool found = await minioClient.BucketExistsAsync("mybucket");
    if (found) 
    {   
        // Remove bucket my-bucketname. This operation will succeed only if the bucket is empty.
        await minioClient.RemoveBucketAsync("mybucket");
        Console.Out.WriteLine("mybucket is removed successfully");
    }
    else 
    {
        Console.Out.WriteLine("mybucket does not exist");
    }
} 
catch(MinioException e) 
{
    Console.Out.WriteLine("Error occurred: " + e);
}

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

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

Lists all objects in a bucket.

Parameters

Param Type Description
bucketName string Name of the bucket
prefix string Prefix string. List objects whose name starts with prefix
recursive bool when false, emulates a directory structure where each listing returned is either a full object or part of the object's key up to the first '/'. All objects with the same prefix up to the first '/' will be merged into one entry
cancellationToken System.Threading.CancellationToken Optional parameter. Defaults to default(CancellationToken)
Return Type Exceptions
IObservable<Item>:an Observable of Items. None

Example

try 
{
    // Check whether 'mybucket' exists or not.
    bool found = minioClient.BucketExistsAsync("mybucket");
    if (found) 
    {
        // List objects from 'my-bucketname'
        IObservable<Item> observable = minioClient.ListObjectsAsync("mybucket", "prefix", true);
        IDisposable subscription = observable.Subscribe(
                item => Console.WriteLine("OnNext: {0}", item.Key),
                ex => Console.WriteLine("OnError: {0}", ex.Message),
                () => Console.WriteLine("OnComplete: {0}"));    
    } 
    else 
    {
        Console.Out.WriteLine("mybucket does not exist");
    }
} 
catch (MinioException e) 
{
    Console.Out.WriteLine("Error occurred: " + e);
}

ListIncompleteUploads(string bucketName, string prefix, bool recursive)

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

Lists partially uploaded objects in a bucket.

Parameters

Param Type Description
bucketName string Name of the bucket
prefix string Prefix string. List objects whose name starts with prefix
recursive bool when false, emulates a directory structure where each listing returned is either a full object or part of the object's key up to the first '/'. All objects with the same prefix up to the first '/' will be merged into one entry
cancellationToken System.Threading.CancellationToken Optional parameter. Defaults to default(CancellationToken)
Return Type Exceptions
IObservable<Upload>: an Observable of Upload. None

Example

try 
{
    // Check whether 'mybucket' exist or not.
    bool found = minioClient.BucketExistsAsync("mybucket");
    if (found) 
    {
        // List all incomplete multipart upload of objects in 'mybucket'
        IObservable<Upload> observable = minioClient.ListIncompleteUploads("mybucket", "prefix", true);
        IDisposable subscription = observable.Subscribe(
                            item => Console.WriteLine("OnNext: {0}", item.Key),
                            ex => Console.WriteLine("OnError: {0}", ex.Message),
                            () => Console.WriteLine("OnComplete: {0}"));
    } 
    else 
    {
        Console.Out.WriteLine("mybucket does not exist");
    }
} 
catch (MinioException e) 
{
    Console.Out.WriteLine("Error occurred: " + e);
}

GetPolicyAsync(string bucketName, string objectPrefix)

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

Get bucket policy at given objectPrefix.

Parameters

Param Type Description
bucketName string Name of the bucket.
objectPrefix string Policy applies to objects with prefix
cancellationToken System.Threading.CancellationToken Optional parameter. Defaults to default(CancellationToken)
Return Type Exceptions
Task<PolicyType>: The current bucket policy for given bucket and objectPrefix. Listed Exceptions:
InvalidBucketNameException : upon invalid bucket name.
InvalidObjectPrefixException : upon invalid object prefix.
ConnectionException : upon connection error.
AccessDeniedException : upon access denial
InternalClientException : upon internal library error.
BucketNotFoundException : upon missing bucket

Example

try 
{
    PolicyType policy = await minioClient.GetPolicyAsync("myBucket", objectPrefix:"downloads");
    Console.Out.WriteLine("Current policy: " + policy.GetType().ToString());
} 
catch (MinioException e) 
{
    Console.Out.WriteLine("Error occurred: " + e);
}

SetPolicyAsync(string bucketName, string objectPrefix, PolicyType policyType)

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

Set policy on bucket and object prefix.

Parameters

Param Type Description
bucketName string Name of the bucket
objectPrefix string Policy applies to objects with prefix
PolicyType PolicyType Policy to apply
cancellationToken System.Threading.CancellationToken Optional parameter. Defaults to default(CancellationToken)
Return Type Exceptions
Task Listed Exceptions:
InvalidBucketNameException : upon invalid bucket name
ConnectionException : upon connection error
InternalClientException : upon internal library error
InvalidBucketNameException : upon invalid bucket name
InvalidObjectPrefixException : upon invalid object prefix

Example

try 
{
    await minioClient.SetPolicyAsync("myBucket", "uploads",PolicyType.WRITE_ONLY);
}
catch (MinioException e) 
{
    Console.Out.WriteLine("Error occurred: " + e);
}

SetBucketNotificationAsync(string bucketName,BucketNotification notification)

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

Sets notification configuration for a given bucket

Parameters

Param Type Description
bucketName string Name of the bucket
notification BucketNotification Notifications to apply
cancellationToken System.Threading.CancellationToken Optional parameter. Defaults to default(CancellationToken)
Return Type Exceptions
Task Listed Exceptions:
ConnectionException : upon connection error
InternalClientException : upon internal library error
InvalidBucketNameException : upon invalid bucket name
InvalidOperationException: upon unsuccessful serialization of notification object

Example

try 
{
    BucketNotification notification = new BucketNotification();
    Arn topicArn = new Arn("aws", "sns", "us-west-1", "412334153608", "topicminio");

    TopicConfig topicConfiguration = new TopicConfig(topicArn);
    List<EventType> events = new List<EventType>(){ EventType.ObjectCreatedPut , EventType.ObjectCreatedCopy };
    topicConfiguration.AddEvents(events);
    topicConfiguration.AddFilterPrefix("images");
    topicConfiguration.AddFilterSuffix("jpg");
    notification.AddTopic(topicConfiguration);

    QueueConfig queueConfiguration = new QueueConfig("arn:aws:sqs:us-west-1:482314153608:testminioqueue1");
    queueConfiguration.AddEvents(new List<EventType>() { EventType.ObjectCreatedCompleteMultipartUpload });
    notification.AddQueue(queueConfiguration);    

    await minio.SetBucketNotificationsAsync(bucketName, 
                                        notification);
    Console.Out.WriteLine("Notifications set for the bucket " + bucketName + " successfully");
}
catch (MinioException e) 
{
    Console.Out.WriteLine("Error occurred: " + e);
}

GetBucketNotificationAsync(string bucketName)

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

Get bucket notification configuration

Parameters

Param Type Description
bucketName string Name of the bucket.
cancellationToken System.Threading.CancellationToken Optional parameter. Defaults to default(CancellationToken)
Return Type Exceptions
Task<BucketNotification>: The current notification configuration for the bucket. Listed Exceptions:
InvalidBucketNameException : upon invalid bucket name.
ConnectionException : upon connection error.
AccessDeniedException : upon access denial
InternalClientException : upon internal library error.
BucketNotFoundException : upon missing bucket
InvalidOperationException: upon unsuccessful deserialization of xml data

Example

try 
{
    BucketNotification notifications = await minioClient.GetBucketNotificationAsync(bucketName);
    Console.Out.WriteLine("Notifications is " + notifications.ToXML());
} 
catch (MinioException e) 
{
    Console.Out.WriteLine("Error occurred: " + e);
}

RemoveAllBucketNotificationsAsync(string bucketName)

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

Remove all notification configurations set on the bucket

Parameters

Param Type Description
bucketName string Name of the bucket.
cancellationToken System.Threading.CancellationToken Optional parameter. Defaults to default(CancellationToken)
Return Type Exceptions
`Task: Listed Exceptions:
InvalidBucketNameException : upon invalid bucket name.
ConnectionException : upon connection error.
AccessDeniedException : upon access denial
InternalClientException : upon internal library error.
BucketNotFoundException : upon missing bucket
InvalidOperationException: upon unsuccessful serialization of xml data

Example

try 
{
    await minioClient.RemoveAllBucketNotificationsAsync(bucketName);
    Console.Out.WriteLine("Notifications successfully removed from the bucket " + bucketName);
} 
catch (MinioException e) 
{
    Console.Out.WriteLine("Error occurred: " + e);
}

3. Object operations

GetObjectAsync(string bucketName, string objectName, Action callback)

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

Downloads an object as a stream.

Parameters

Param Type Description
bucketName string Name of the bucket
objectName string Object name in the bucket
callback Action Call back to process stream
cancellationToken System.Threading.CancellationToken Optional parameter. Defaults to default(CancellationToken)
Return Type Exceptions
Task: Task callback returns an InputStream containing the object data. Listed Exceptions:
InvalidBucketNameException : upon invalid bucket name.
ConnectionException : upon connection error.
InternalClientException : upon internal library error.

Example

try 
{
   // Check whether the object exists using statObject().
   // If the object is not found, statObject() throws an exception,
   // else it means that the object exists.
   // Execution is successful.
   await minioClient.StatObjectAsync("mybucket", "myobject");

   // Get input stream to have content of 'my-objectname' from 'my-bucketname'
   await minioClient.GetObjectAsync("mybucket", "myobject", 
                                    (stream) =>
                                    {
                                        stream.CopyTo(Console.OpenStandardOutput());
                                    });
  } 
  catch (MinioException e) 
  {
      Console.Out.WriteLine("Error occurred: " + e);
  }

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))

Downloads the specified range bytes of an object as a stream.Both offset and length are required.

Parameters

Param Type Description
bucketName string Name of the bucket.
objectName string Object name in the bucket.
offset long Offset of the object from where stream will start
length long Length of the object to read in from the stream
callback Action Call back to process stream
cancellationToken System.Threading.CancellationToken Optional parameter. Defaults to default(CancellationToken)
Return Type Exceptions
Task: Task callback returns an InputStream containing the object data. Listed Exceptions:
InvalidBucketNameException : upon invalid bucket name.
ConnectionException : upon connection error.
InternalClientException : upon internal library error.

Example

try 
{
   // Check whether the object exists using statObject().
   // If the object is not found, statObject() throws an exception,
   // else it means that the object exists.
   // Execution is successful.
   await minioClient.StatObjectAsync("mybucket", "myobject");

   // Get input stream to have content of 'my-objectname' from 'my-bucketname'
   await minioClient.GetObjectAsync("mybucket", "myobject", 1024L, 10L,
                                    (stream) =>
                                    {
                                        stream.CopyTo(Console.OpenStandardOutput());
                                    });
  } 
  catch (MinioException e) 
  {
      Console.Out.WriteLine("Error occurred: " + e);
  }

GetObjectAsync(String bucketName, String objectName, String fileName)

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

Downloads and saves the object as a file in the local filesystem.

Parameters

Param Type Description
bucketName String Name of the bucket
objectName String Object name in the bucket
fileName String File name
cancellationToken System.Threading.CancellationToken Optional parameter. Defaults to default(CancellationToken)
Return Type Exceptions
Task Listed Exceptions:
InvalidBucketNameException : upon invalid bucket name
ConnectionException : upon connection error
InternalClientException : upon internal library error

Example

try 
{
   // Check whether the object exists using statObjectAsync().
   // If the object is not found, statObjectAsync() throws an exception,
   // else it means that the object exists.
   // Execution is successful.
   await minioClient.StatObjectAsync("mybucket", "myobject");

   // Gets the object's data and stores it in photo.jpg
   await minioClient.GetObjectAsync("mybucket", "myobject", "photo.jpg");

} 
catch (MinioException e) 
{
   Console.Out.WriteLine("Error occurred: " + e);
}

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))

Uploads contents from a stream to objectName.

Parameters

Param Type Description
bucketName string Name of the bucket
objectName string Object name in the bucket
data Stream Stream to upload
size long size of stream
contentType string Content type of the file. Defaults to "application/octet-stream"
metaData Dictionary Dictionary of metadata headers. Defaults to null.

| cancellationToken| System.Threading.CancellationToken | Optional parameter. Defaults to default(CancellationToken) |

Return Type Exceptions
Task Listed Exceptions:
InvalidBucketNameException : upon invalid bucket name
ConnectionException : upon connection error
InternalClientException : upon internal library error
EntityTooLargeException: upon proposed upload size exceeding max allowed
UnexpectedShortReadException: data read was shorter than size of input buffer
ArgumentNullException: upon null input stream

Example

The maximum size of a single object is limited to 5TB. putObject transparently uploads objects larger than 5MiB in multiple parts. This allows failed uploads to resume safely by only uploading the missing parts. Uploaded data is carefully verified using MD5SUM signatures.

try 
{
    byte[] bs = File.ReadAllBytes(fileName);
    System.IO.MemoryStream filestream = new System.IO.MemoryStream(bs);

    await minio.PutObjectAsync("mybucket",
                               "island.jpg",
                                filestream,
                                filestream.Length,
                               "application/octet-stream");
    Console.Out.WriteLine("island.jpg is uploaded successfully");
} 
catch(MinioException e) 
{
    Console.Out.WriteLine("Error occurred: " + e);
}

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))

Uploads contents from a file to objectName.

Parameters

Param Type Description
bucketName string Name of the bucket
objectName string Object name in the bucket
fileName string File to upload
contentType string Content type of the file. Defaults to "
metadata Dictionary Dictionary of meta data headers and their values.Defaults to null.

| cancellationToken| System.Threading.CancellationToken | Optional parameter. Defaults to default(CancellationToken) |

Return Type Exceptions
Task Listed Exceptions:
InvalidBucketNameException : upon invalid bucket name
ConnectionException : upon connection error
InternalClientException : upon internal library error
EntityTooLargeException: upon proposed upload size exceeding max allowed

Example

The maximum size of a single object is limited to 5TB. putObject transparently uploads objects larger than 5MiB in multiple parts. This allows failed uploads to resume safely by only uploading the missing parts. Uploaded data is carefully verified using MD5SUM signatures.

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

StatObjectAsync(string bucketName, string objectName)

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

Gets metadata of an object.

Parameters

Param Type Description
bucketName string Name of the bucket
objectName string Object name in the bucket
cancellationToken System.Threading.CancellationToken Optional parameter. Defaults to default(CancellationToken)
Return Type Exceptions
Task<ObjectStat>: Populated object meta data. Listed Exceptions:
InvalidBucketNameException : upon invalid bucket name
ConnectionException : upon connection error
InternalClientException : upon internal library error

Example

try 
{
   // Get the metadata of the object.
   ObjectStat objectStat = await minioClient.StatObjectAsync("mybucket", "myobject");
   Console.Out.WriteLine(objectStat);
} 
catch(MinioException e) 
{
   Console.Out.WriteLine("Error occurred: " + e);
}

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))

Copies content from objectName to destObjectName.

Parameters

Param Type Description
bucketName string Name of the source bucket
objectName string Object name in the source bucket to be copied
destBucketName string Destination bucket name
destObjectName string Destination object name to be created, if not provided defaults to source object name
copyConditions CopyConditions Map of conditions useful for applying restrictions on copy operation
cancellationToken System.Threading.CancellationToken Optional parameter. Defaults to default(CancellationToken)
Return Type Exceptions
Task Listed Exceptions:
InvalidBucketNameException : upon invalid bucket name
ConnectionException : upon connection error
InternalClientException : upon internal library error
ArgumentException : upon missing bucket/object names

Example

This API performs a server side copy operation from a given source object to destination object.

try
{
   CopyConditions copyConditions = new CopyConditions();
   copyConditions.setMatchETagNone("TestETag");

   await minioClient.CopyObjectAsync("mybucket",  "island.jpg", "mydestbucket", "processed.png", copyConditions);
   Console.Out.WriteLine("island.jpg is uploaded successfully");
} 
catch(MinioException e) 
{
   Console.Out.WriteLine("Error occurred: " + e);
}

RemoveObjectAsync(string bucketName, string objectName)

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

Removes an object.

Parameters

Param Type Description
bucketName string Name of the bucket
objectName string Object name in the bucket
cancellationToken System.Threading.CancellationToken Optional parameter. Defaults to default(CancellationToken)
Return Type Exceptions
Task Listed Exceptions:
InvalidBucketNameException : upon invalid bucket name
ConnectionException : upon connection error
InternalClientException : upon internal library error

Example

try 
{
    // Remove objectname from the bucket my-bucketname.
    await minioClient.RemoveObjectAsync("mybucket", "myobject");
    Console.Out.WriteLine("successfully removed mybucket/myobject");
} 
catch (MinioException e) 
{
    Console.Out.WriteLine("Error: " + e);
}

RemoveObjectAsync(string bucketName, IEnumerable objectsList)

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

Removes a list of objects.

Parameters

Param Type Description
bucketName string Name of the bucket
objectsList IEnumerable IEnumerable of Object names
cancellationToken System.Threading.CancellationToken Optional parameter. Defaults to default(CancellationToken)
Return Type Exceptions
Task Listed Exceptions:
InvalidBucketNameException : upon invalid bucket name
ConnectionException : upon connection error
InternalClientException : upon internal library error

Example

try 
{
    List<String> objectNames = new LinkedList<String>();
    objectNames.add("my-objectname1");
    objectNames.add("my-objectname2");
    objectNames.add("my-objectname3");
    // Remove list of objects in objectNames from the bucket bucketName.
    IObservable<DeleteError> observable = await minio.RemoveObjectAsync(bucketName, objectNames);
    IDisposable subscription = observable.Subscribe(
        deleteError => Console.WriteLine("Object: {0}", deleteError.Key),
        ex => Console.WriteLine("OnError: {0}", ex),
        () =>
        {
            Console.WriteLine("Listed all delete errors for remove objects on  " + bucketName + "\n");
        });
} 
catch (MinioException e) 
{
    Console.Out.WriteLine("Error: " + e);
}

RemoveIncompleteUploadAsync(string bucketName, string objectName)

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

Removes a partially uploaded object.

Parameters

Param Type Description
bucketName string Name of the bucket
objectName string Object name in the bucket
cancellationToken System.Threading.CancellationToken Optional parameter. Defaults to default(CancellationToken)
Return Type Exceptions
Task Listed Exceptions:
InvalidBucketNameException : upon invalid bucket name
ConnectionException : upon connection error
InternalClientException : upon internal library error

Example

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

4. Presigned operations

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

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

Generates a presigned URL for HTTP GET operations. Browsers/Mobile clients may point to this URL to directly download objects even if the bucket is private. This presigned URL can have an associated expiration time in seconds after which it is no longer operational. The default expiry is set to 7 days.

Parameters

Param Type Description
bucketName String Name of the bucket
objectName String Object name in the bucket
expiresInt Integer Expiry in seconds. Default expiry is set to 7 days.
reqParams Dictionary Additional response header overrides supports response-expires, response-content-type, response-cache-control, response-content-disposition.
Return Type Exceptions
:--- :---
Task<string> : string contains URL to download the object Listed Exceptions:
InvalidBucketNameException : upon invalid bucket name
ConnectionException : upon connection error
InvalidExpiryRangeException : upon invalid expiry range.

Example

try 
{
    String url = await minioClient.PresignedGetObjectAsync("mybucket", "myobject", 60 * 60 * 24);
    Console.Out.WriteLine(url);
} 
catch(MinioException e) 
{
    Console.Out.WriteLine("Error occurred: " + e);
}

PresignedPutObjectAsync(string bucketName, string objectName, int expiresInt)

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

Generates a presigned URL for HTTP PUT operations. Browsers/Mobile clients may point to this URL to upload objects directly to a bucket even if it is private. This presigned URL can have an associated expiration time in seconds after which it is no longer operational. The default expiry is set to 7 days.

Parameters

Param Type Description
bucketName string Name of the bucket
objectName string Object name in the bucket
expiresInt int Expiry in seconds. Default expiry is set to 7 days.
Return Type Exceptions
Task<string> : string contains URL to download the object Listed Exceptions:
InvalidBucketNameException : upon invalid bucket name
InvalidKeyException : upon an invalid access key or secret key
ConnectionException : upon connection error
InvalidExpiryRangeException : upon invalid expiry range.

Example

try 
{
    String url = await minioClient.PresignedPutObjectAsync("mybucket", "myobject", 60 * 60 * 24);
    Console.Out.WriteLine(url);
}
catch(MinioException e) 
{
    Console.Out.WriteLine("Error occurred: " + e);
}

PresignedPostPolicy(PostPolicy policy)

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

Allows setting policy conditions to a presigned URL for POST operations. Policies such as bucket name to receive object uploads, key name prefixes, expiry policy may be set.

Parameters

Param Type Description
PostPolicy PostPolicy Post policy of an object.
Return Type Exceptions
Task<Dictionary<string,string>>: Map of strings to construct form-data. Listed Exceptions:
InvalidBucketNameException : upon invalid bucket name
ConnectionException : upon connection error
NoSuchAlgorithmException : upon requested algorithm was not found during signature calculation.

Example

try 
{
    PostPolicy policy = new PostPolicy();
    policy.SetContentType("image/png");
    policy.SetUserMetadata("custom", "user");
    DateTime expiration = DateTime.UtcNow;
    policy.SetExpires(expiration.AddDays(10));
    policy.SetKey("my-objectname");
    policy.SetBucket("my-bucketname");

    Dictionary<string, string> formData = minioClient.Api.PresignedPostPolicy(policy);
    string curlCommand = "curl ";
    foreach (KeyValuePair<string, string> pair in formData)
    {
        curlCommand = curlCommand + " -F " + pair.Key + "=" + pair.Value;
    }
    curlCommand = curlCommand + " -F file=@/etc/bashrc https://s3.amazonaws.com/my-bucketname";
    Console.Out.WriteLine(curlCommand);
} 
catch(MinioException e) 
{
  Console.Out.WriteLine("Error occurred: " + e);
}

Client Custom Settings

SetAppInfo(string appName, tring appVersion)

Adds application details to User-Agent.

Parameters

Param Type Description
appName string Name of the application performing the API requests
appVersion string Version of the application performing the API requests

Example

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

SetTraceOn()

Enables HTTP tracing. The trace is written to the stdout.

Example

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

SetTraceOff()

Disables HTTP tracing.

Example

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