Minio 6.0.3
Requires NuGet 2.14 or higher.
dotnet add package Minio --version 6.0.3
NuGet\Install-Package Minio -Version 6.0.3
<PackageReference Include="Minio" Version="6.0.3" />
paket add Minio --version 6.0.3
#r "nuget: Minio, 6.0.3"
// Install Minio as a Cake Addin #addin nuget:?package=Minio&version=6.0.3 // Install Minio as a Cake Tool #tool nuget:?package=Minio&version=6.0.3
MinIO Client SDK for .NET
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 the Dotnet Client API Reference.This document assumes that you have a working VisualStudio development environment.
Install from NuGet
To install MinIO .NET package, run the following command in Nuget Package Manager Console.
PM> Install-Package Minio
MinIO Client Example for ASP.NET
When using AddMinio
to add Minio to your ServiceCollection, Minio will also use any custom Logging providers you've added, like Serilog to output traces when enabled.
using Minio;
using Minio.DataModel.Args;
public static class Program
{
var endpoint = "play.min.io";
var accessKey = "minioadmin";
var secretKey = "minioadmin";
public static void Main(string[] args)
{
var builder = WebApplication.CreateBuilder();
// Add Minio using the default endpoint
builder.Services.AddMinio(accessKey, secretKey);
// Add Minio using the custom endpoint and configure additional settings for default MinioClient initialization
builder.Services.AddMinio(configureClient => configureClient
.WithEndpoint(endpoint)
.WithCredentials(accessKey, secretKey)
.Build());
// NOTE: SSL and Build are called by the build-in services already.
var app = builder.Build();
app.Run();
}
}
[ApiController]
public class ExampleController : ControllerBase
{
private readonly IMinioClient minioClient;
public ExampleController(IMinioClient minioClient)
{
this.minioClient = minioClient;
}
[HttpGet]
[ProducesResponseType(typeof(string), StatusCodes.Status200OK)]
public async Task<IActionResult> GetUrl(string bucketID)
{
return Ok(await minioClient.PresignedGetObjectAsync(new PresignedGetObjectArgs()
.WithBucket(bucketID))
.ConfigureAwait(false));
}
}
[ApiController]
public class ExampleFactoryController : ControllerBase
{
private readonly IMinioClientFactory minioClientFactory;
public ExampleFactoryController(IMinioClientFactory minioClientFactory)
{
this.minioClientFactory = minioClientFactory;
}
[HttpGet]
[ProducesResponseType(typeof(string), StatusCodes.Status200OK)]
public async Task<IActionResult> GetUrl(string bucketID)
{
var minioClient = minioClientFactory.CreateClient(); //Has optional argument to configure specifics
return Ok(await minioClient.PresignedGetObjectAsync(new PresignedGetObjectArgs()
.WithBucket(bucketID))
.ConfigureAwait(false));
}
}
MinIO Client Example
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.
using Minio;
var endpoint = "play.min.io";
var accessKey = "minioadmin";
var secretKey = "minioadmin";
var secure = true;
// Initialize the client with access credentials.
private static IMinioClient minio = new MinioClient()
.WithEndpoint(endpoint)
.WithCredentials(accessKey, secretKey)
.WithSSL(secure)
.Build();
// Create an async task for listing buckets.
var getListBucketsTask = await minio.ListBucketsAsync().ConfigureAwait(false);
// Iterate over the list of buckets.
foreach (var bucket in getListBucketsTask.Result.Buckets)
{
Console.WriteLine(bucket.Name + " " + bucket.CreationDateDateTime);
}
Complete File Uploader Example
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
using System;
using Minio;
using Minio.Exceptions;
using Minio.DataModel;
using Minio.Credentials;
using Minio.DataModel.Args;
using System.Threading.Tasks;
namespace FileUploader
{
class FileUpload
{
static void Main(string[] args)
{
var endpoint = "play.min.io";
var accessKey = "minioadmin";
var secretKey = "minioadmin";
try
{
var minio = new MinioClient()
.WithEndpoint(endpoint)
.WithCredentials(accessKey, secretKey)
.WithSSL()
.Build();
FileUpload.Run(minio).Wait();
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
Console.ReadLine();
}
// File uploader task.
private async static Task Run(IMinioClient minio)
{
var bucketName = "mymusic";
var location = "us-east-1";
var objectName = "golden-oldies.zip";
var filePath = "C:\\Users\\username\\Downloads\\golden_oldies.mp3";
var contentType = "application/zip";
try
{
// Make a bucket on the server, if not already present.
var beArgs = new BucketExistsArgs()
.WithBucket(bucketName);
bool found = await minio.BucketExistsAsync(beArgs).ConfigureAwait(false);
if (!found)
{
var mbArgs = new MakeBucketArgs()
.WithBucket(bucketName);
await minio.MakeBucketAsync(mbArgs).ConfigureAwait(false);
}
// Upload a file to bucket.
var putObjectArgs = new PutObjectArgs()
.WithBucket(bucketName)
.WithObject(objectName)
.WithFileName(filePath)
.WithContentType(contentType);
await minio.PutObjectAsync(putObjectArgs).ConfigureAwait(false);
Console.WriteLine("Successfully uploaded " + objectName );
}
catch (MinioException e)
{
Console.WriteLine("File Upload Error: {0}", e.Message);
}
}
}
}
Running MinIO Client Examples
On Windows
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
On Linux
Setting .NET SDK on Linux (Ubuntu 22.04)
<blockquote> NOTE: minio-dotnet requires .NET 6.x SDK to build on Linux. </blockquote>
- Install .Net SDK
wget https://packages.microsoft.com/config/ubuntu/22.04/packages-microsoft-prod.deb -O packages-microsoft-prod.deb
sudo dpkg -i packages-microsoft-prod.deb
rm packages-microsoft-prod.deb
sudo apt-get update; \
sudo apt-get install -y apt-transport-https && \
sudo apt-get update && \
sudo apt-get install -y dotnet-sdk-6.0
Running Minio.Examples
- 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.cs Uncomment 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-restore
dotnet pack ./Minio/Minio.csproj --no-build --configuration Release --output ./artifacts
dotnet test ./Minio.Tests/Minio.Tests.csproj
Bucket Operations
- MakeBucket.cs
- ListBuckets.cs
- BucketExists.cs
- RemoveBucket.cs
- ListObjects.cs
- ListIncompleteUploads.cs
- ListenBucketNotifications.cs
Bucket policy Operations
Bucket notification Operations
File Object Operations
Object Operations
Presigned Operations
Client Custom Settings
Explore Further
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net5.0 was computed. net5.0-windows was computed. net6.0 is compatible. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 is compatible. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. |
.NET Core | netcoreapp2.0 was computed. netcoreapp2.1 was computed. netcoreapp2.2 was computed. netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
.NET Standard | netstandard2.0 is compatible. netstandard2.1 was computed. |
.NET Framework | net461 was computed. net462 was computed. net463 was computed. net47 was computed. net471 was computed. net472 was computed. net48 was computed. net481 was computed. |
MonoAndroid | monoandroid was computed. |
MonoMac | monomac was computed. |
MonoTouch | monotouch was computed. |
Tizen | tizen40 was computed. tizen60 was computed. |
Xamarin.iOS | xamarinios was computed. |
Xamarin.Mac | xamarinmac was computed. |
Xamarin.TVOS | xamarintvos was computed. |
Xamarin.WatchOS | xamarinwatchos was computed. |
-
.NETStandard 2.0
- CommunityToolkit.HighPerformance (>= 8.2.2)
- Microsoft.Extensions.DependencyInjection.Abstractions (>= 8.0.1)
- Microsoft.Extensions.Logging (>= 8.0.0)
- System.IO.Hashing (>= 8.0.0)
- System.Net.Http (>= 4.3.4)
- System.Net.Primitives (>= 4.3.1)
- System.Reactive (>= 6.0.1)
- System.Security.Cryptography.Algorithms (>= 4.3.1)
- System.Text.Json (>= 8.0.3)
- System.Threading.Tasks.Extensions (>= 4.5.4)
- System.ValueTuple (>= 4.5.0)
-
net6.0
- CommunityToolkit.HighPerformance (>= 8.2.2)
- Microsoft.Extensions.DependencyInjection.Abstractions (>= 8.0.1)
- Microsoft.Extensions.Logging (>= 8.0.0)
- System.IO.Hashing (>= 8.0.0)
- System.Reactive (>= 6.0.1)
-
net8.0
- CommunityToolkit.HighPerformance (>= 8.2.2)
- Microsoft.Extensions.DependencyInjection.Abstractions (>= 8.0.1)
- Microsoft.Extensions.Logging (>= 8.0.0)
- System.IO.Hashing (>= 8.0.0)
- System.Reactive (>= 6.0.1)
NuGet packages (166)
Showing the top 5 NuGet packages that depend on Minio:
Package | Downloads |
---|---|
Minio.AspNetCore
ASP.NET extensions for MinIO .NET SDK. |
|
OnceMi.AspNetCore.OSS
ASP.NET Core对象储存扩展包,支持Minio自建对象储存、阿里云OSS、腾讯云COS、七牛云Kodo、华为云OBS、百度云BOS、天翼云OOS经典版。 |
|
Volo.Abp.BlobStoring.Minio
Package Description |
|
learun.utils
力软开发框架util通用方法 |
|
Microi.net
开源低代码平台-Microi吾码,官网:https://microi.net |
GitHub repositories (12)
Showing the top 5 popular GitHub repositories that depend on Minio:
Repository | Stars |
---|---|
abpframework/abp
Open-source web application framework for ASP.NET Core! Offers an opinionated architecture to build enterprise software solutions with best practices on top of the .NET. Provides the fundamental infrastructure, cross-cutting-concern implementations, startup templates, application modules, UI themes, tooling and documentation.
|
|
duplicati/duplicati
Store securely encrypted backups in the cloud!
|
|
dotnetcore/Util
Util是一个.Net平台下的应用框架,旨在提升中小团队的开发能力,由工具类、分层架构基类、Ui组件,配套代码生成模板,权限等组成。
|
|
iamoldli/NetModular
NetModular 是基于.Net Core 和 Vue.js 的业务模块化以及前后端分离的快速开发框架
|
|
blogifierdotnet/Blogifier
Blogifier is an open-source publishing platform Written in ASP.NET and Blazor WebAssembly. With Blogifier make a personal blog or a website.
|
Version | Downloads | Last updated |
---|---|---|
6.0.3 | 355,872 | 6/26/2024 |
6.0.2 | 595,241 | 2/11/2024 |
6.0.1 | 571,980 | 11/10/2023 |
6.0.0 | 253,054 | 9/30/2023 |
5.0.2 | 712 | 10/19/2024 |
5.0.0 | 1,180,145 | 5/4/2023 |
4.0.7 | 783,276 | 1/7/2023 |
4.0.6 | 564,538 | 10/29/2022 |
4.0.5 | 788,469 | 7/25/2022 |
4.0.4 | 219,179 | 6/11/2022 |
4.0.3 | 163,638 | 5/16/2022 |
4.0.2 | 121,990 | 4/9/2022 |
4.0.1 | 87,565 | 3/15/2022 |
4.0.0 | 613,928 | 2/28/2022 |
3.1.13 | 5,135,029 | 5/28/2020 |
3.1.12 | 109,669 | 5/1/2020 |
3.1.11 | 131,213 | 4/14/2020 |
3.1.10 | 101,384 | 3/14/2020 |
3.1.9 | 200,757 | 1/8/2020 |
3.1.8 | 35,512 | 12/13/2019 |
3.1.7 | 183,146 | 10/30/2019 |
3.1.6 | 58,245 | 10/11/2019 |
3.1.5 | 417,569 | 9/25/2019 |
3.1.4 | 65,680 | 9/6/2019 |
3.1.3 | 3,467 | 9/5/2019 |
3.1.2 | 3,945 | 9/4/2019 |
3.1.1 | 40,961 | 8/9/2019 |
3.1.0 | 2,361 | 8/7/2019 |
3.0.12 | 45,700 | 7/3/2019 |
3.0.11 | 19,678 | 6/12/2019 |
3.0.10 | 26,298 | 5/8/2019 |
3.0.9 | 11,769 | 4/17/2019 |
3.0.8 | 36,093 | 3/20/2019 |
3.0.7 | 6,155 | 3/13/2019 |
3.0.6 | 3,279 | 3/6/2019 |
3.0.5 | 7,351 | 2/27/2019 |
3.0.4 | 12,153 | 2/13/2019 |
3.0.3 | 3,962 | 1/30/2019 |
3.0.2 | 12,188 | 1/18/2019 |
3.0.1 | 2,690 | 1/16/2019 |
3.0.0 | 10,490 | 1/10/2019 |
2.0.7 | 63,846 | 12/19/2018 |
2.0.6 | 16,503 | 11/6/2018 |
2.0.5 | 139,744 | 10/5/2018 |
2.0.4 | 4,364 | 9/22/2018 |
2.0.3 | 2,842 | 9/19/2018 |
2.0.2 | 5,570 | 9/15/2018 |
2.0.1 | 13,330 | 8/14/2018 |
2.0.0 | 5,497 | 7/24/2018 |
1.1.1 | 71,659 | 4/6/2018 |
1.1.0 | 3,136 | 3/20/2018 |
1.0.7 | 3,350 | 1/12/2018 |
1.0.6 | 2,391 | 12/27/2017 |
1.0.5 | 2,736 | 12/23/2017 |
1.0.4 | 3,088 | 12/5/2017 |
1.0.2 | 12,768 | 8/29/2017 |
1.0.1 | 2,469 | 8/7/2017 |
1.0.0 | 3,111 | 5/17/2017 |
0.2.1 | 12,297 | 11/25/2015 |
0.2.0 | 9,425 | 8/22/2015 |