.NET SDK
MinIO Client SDK provides higher level APIs for MinIO and Amazon S3 compatible cloud storage services.For a complete list of APIs and examples, please take a look at theDotnet Client API Reference.This document assumes that you have a working VisualStudio development environment.
To installMinIO .NET package, run the following command in Nuget Package Manager Console.
PM>Install-PackageMinioWhen usingAddMinio to add Minio to your ServiceCollection, Minio will also use any custom Logging providers you’ve added, like Serilog to output traces when enabled.
usingMinio;usingMinio.DataModel.Args;publicstaticclassProgram{varendpoint="play.min.io";varaccessKey="minioadmin";varsecretKey="minioadmin";publicstaticvoidMain(string[]args){varbuilder=WebApplication.CreateBuilder();// Add Minio using the default endpointbuilder.Services.AddMinio(accessKey,secretKey);// Add Minio using the custom endpoint and configure additional settings for default MinioClient initializationbuilder.Services.AddMinio(configureClient=>configureClient.WithEndpoint(endpoint).WithCredentials(accessKey,secretKey).Build());// NOTE: SSL and Build are called by the build-in services already.varapp=builder.Build();app.Run();}}[ApiController]publicclassExampleController:ControllerBase{privatereadonlyIMinioClientminioClient;publicExampleController(IMinioClientminioClient){this.minioClient=minioClient;} [HttpGet] [ProducesResponseType(typeof(string), StatusCodes.Status200OK)]publicasyncTask<IActionResult>GetUrl(stringbucketID){returnOk(awaitminioClient.PresignedGetObjectAsync(newPresignedGetObjectArgs().WithBucket(bucketID)).ConfigureAwait(false));}}[ApiController]publicclassExampleFactoryController:ControllerBase{privatereadonlyIMinioClientFactoryminioClientFactory;publicExampleFactoryController(IMinioClientFactoryminioClientFactory){this.minioClientFactory=minioClientFactory;} [HttpGet] [ProducesResponseType(typeof(string), StatusCodes.Status200OK)]publicasyncTask<IActionResult>GetUrl(stringbucketID){varminioClient=minioClientFactory.CreateClient();//Has optional argument to configure specificsreturnOk(awaitminioClient.PresignedGetObjectAsync(newPresignedGetObjectArgs().WithBucket(bucketID)).ConfigureAwait(false));}}To connect to an Amazon S3 compatible cloud storage service, you need the following information
| Variable name | Description |
|---|---|
| endpoint | <Domain-name> or <ip:port> of your object storage |
| accessKey | User ID that uniquely identifies your account |
| secretKey | Password to your account |
| secure | boolean value to enable/disable HTTPS support (default=true) |
The following examples uses a freely hosted public MinIO service “play.min.io” for development purposes.
usingMinio;varendpoint="play.min.io";varaccessKey="minioadmin";varsecretKey="minioadmin";varsecure=true;// Initialize the client with access credentials.privatestaticIMinioClientminio=newMinioClient().WithEndpoint(endpoint).WithCredentials(accessKey,secretKey).WithSSL(secure).Build();// Create an async task for listing buckets.vargetListBucketsTask=awaitminio.ListBucketsAsync().ConfigureAwait(false);// Iterate over the list of buckets.foreach(varbucketingetListBucketsTask.Result.Buckets){Console.WriteLine(bucket.Name+" "+bucket.CreationDateDateTime);}This example program connects to an object storage server, creates a bucket and uploads a file to the bucket.To run the following example, click on [Link] and start the project
usingSystem;usingMinio;usingMinio.Exceptions;usingMinio.DataModel;usingMinio.Credentials;usingMinio.DataModel.Args;usingSystem.Threading.Tasks;namespaceFileUploader{classFileUpload{staticvoidMain(string[]args){varendpoint="play.min.io";varaccessKey="minioadmin";varsecretKey="minioadmin";try{varminio=newMinioClient().WithEndpoint(endpoint).WithCredentials(accessKey,secretKey).WithSSL().Build();FileUpload.Run(minio).Wait();}catch(Exceptionex){Console.WriteLine(ex.Message);}Console.ReadLine();}// File uploader task.privateasyncstaticTaskRun(IMinioClientminio){varbucketName="mymusic";varlocation="us-east-1";varobjectName="golden-oldies.zip";varfilePath="C:\\Users\\username\\Downloads\\golden_oldies.mp3";varcontentType="application/zip";try{// Make a bucket on the server, if not already present.varbeArgs=newBucketExistsArgs().WithBucket(bucketName);boolfound=awaitminio.BucketExistsAsync(beArgs).ConfigureAwait(false);if(!found){varmbArgs=newMakeBucketArgs().WithBucket(bucketName);awaitminio.MakeBucketAsync(mbArgs).ConfigureAwait(false);}// Upload a file to bucket.varputObjectArgs=newPutObjectArgs().WithBucket(bucketName).WithObject(objectName).WithFileName(filePath).WithContentType(contentType);awaitminio.PutObjectAsync(putObjectArgs).ConfigureAwait(false);Console.WriteLine("Successfully uploaded "+objectName);}catch(MinioExceptione){Console.WriteLine("File Upload Error: {0}",e.Message);}}}}Clone this repository and open the Minio.Sln in Visual Studio 2017.
Enter your credentials and bucket name, object name etc. in Minio.Examples/Program.cs
Uncomment the example test cases such as below in Program.cs to run an example.
//Cases.MakeBucket.Run(minioClient, bucketName).Wait();- Run the Minio.Client.Examples project from Visual Studio
NOTE: minio-dotnet requires .NET 6.x SDK to build on Linux.
- Install.Net SDK
wget https://packages.microsoft.com/config/ubuntu/22.04/packages-microsoft-prod.deb -O packages-microsoft-prod.debsudo dpkg -i packages-microsoft-prod.debrm packages-microsoft-prod.debsudo apt-get update; \ sudo apt-get install -y apt-transport-https && \ sudo apt-get update && \ sudo apt-get install -y dotnet-sdk-6.0- Clone this project.
$ git clone https://github.com/minio/minio-dotnet && cd minio-dotnet- Enter your credentials and bucket name, object name etc. in Minio.Examples/Program.csUncomment the example test cases such as below in Program.cs to run an example.
//Cases.MakeBucket.Run(minioClient, bucketName).Wait();dotnet build --configuration Release --no-restoredotnet pack ./Minio/Minio.csproj --no-build --configuration Release --output ./artifactsdotnet test ./Minio.Tests/Minio.Tests.csproj- MakeBucket.cs
- ListBuckets.cs
- BucketExists.cs
- RemoveBucket.cs
- ListObjects.cs
- ListIncompleteUploads.cs
- ListenBucketNotifications.cs