Сразу скажу, что dotnet разработчик из меня такой себе, точнее я совсем не разработчик. Но я настраиваю MinIO для разработчиков и бывают ситуации, когда разработчик, который пишет код на dotnet прибегает со словами ты что-то настроил неправильно, у меня не работает код. На мои вопросы почему у остальных работает нормально он просто хлопает глазами и говорит не знаю.

Так вот я решил накатать простое приложение, которое просто загрузит файл в корзину на его глазах и соответственно я могу отправить его смотреть свой код.

Установка dotnet

Для windows:

 winget install Microsoft.DotNet.SDK.8
 winget install Microsoft.DotNet.AspNetCore.8
 winget install Microsoft.DotNet.DesktopRuntime.8

Подготовка

dotnet new console -n FileUploader
dotnet add package Minio

Меняем содержимое файла Program.cs на:

using Minio;
using Minio.Exceptions;
using Minio.DataModel.Args;

namespace FileUploader
{
    class FileUpload
    {
        static void Main(string[] args)
        {
            var endpoint  = "minio-host";
            var accessKey = "user";
            var secretKey = "pwd";
            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 = "bucket";
            var objectName = "noPmem.log";
            var filePath = "C:\\Users\\user\\Downloads\\noPmem.log"; // Change this path
            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);
            }
        }
    }
}

Запуск

Для запуска приложения осталось выполнить всего 2 команды:

dotnet build
dotnet run
Successfully uploaded noPmem.log