Expero.Libraries.CSharp.ObjectStorage.S3 2.5.0-beta.34859

Expero.Libraries.CSharp.ObjectStorage.S3

Пакет для работы c S3-like ObjectStorage.

Пакет содержит:

  • Сервис для работы c S3-like ObjectStorage
  • Фабрику для получения именованного экземпляра сервиса с разными параметрами
  • Health метрика для работы c S3-like ObjectStorage

Работа с IObjectStorageS3Service

Пример подключения:


services.AddMdsObjectStorageS3Service(s =>
{
    var options = //...

    s.Host = options.Host; // Хост для подключеня
    s.Ssl = options.Ssl; // Используем ли мы SSL для работы
    s.AccessKey = options.AccessKey; // AccessKey для подключеня
    s.SecretKey = options.SecretKey; // SecretKey для подключеня
    s.DefaultBucket = options.DefaultBucket; // Какой бакет будет использоваться для проверки подключения и для загрузки файлов по умолчанию 
});

Рекоменудуем подключать на уровне Core.Tools, и там же положить фабрику для имен бакетов, если планируется использовать несколько бакетов для работы.

Например, вот так:


public static class ObjectStorageBuckets
{
    // NB: Имена необходимо указывать в lowercase
    public static ObjectStorageS3BucketName Default { get; } = new("default");

    public static ObjectStorageS3BucketName Feeds { get; } = new("feeds");
}

Работа с IObjectStorageS3Factory

В пакете есть возможность подключения именованного сервиса и получения экземпляра через фабрику IObjectStorageS3Factory. Фабрика доступна через DI, при регистрации сервиса с указанием имени (AddMdsObjectStorageS3Service("Name", ...).

Пример:


services.AddMdsObjectStorageS3Service("Name", s =>
{
    var options = //...

    s.Host = options.Host; // Хост для подключеня
    s.Ssl = options.Ssl; // Используем ли мы SSL для работы
    s.AccessKey = options.AccessKey; // AccessKey для подключеня
    s.SecretKey = options.SecretKey; // SecretKey для подключеня
    s.DefaultBucket = options.DefaultBucket; // Какой бакет будет использоваться для проверки подключения и для загрузки файлов по умолчанию 
});


internal class Uploader : IUploader
{
    private readonly IObjectStorageS3Service _objectStorage;

    public LoggingUploader(IObjectStorageS3Factory factory)
    {
        _objectStorage = factory.Create("Name");
    }

    /*...*/
}

N.B. Для получения экземплра сервиса IObjectStorageS3Service через DI обязательно нужно зарегиститровать сервис, используя AddMdsObjectStorageS3Service без указания имени.

Директории

При сохранении файлов в бакет, библиотека позволяет прописать директорию внутри бакета, если директория не существует, то она будет создана.

Например, если нам нужно сохранить какой-либо контент в бакет по директории dir/sub_dir/sub_sub_dir/, то код будет выглядеть так:


// Для сохранения можно использовать следующий метод из IObjectStorageS3Service
Task<FileUploadResult> IObjectStorageS3Service.UploadAsync(byte[] content, UploadParameters parameters);

Пример использования:


IObjectStorageS3Service _objectStorage; // получаем через DI

var parameters = new UploadParameters
{
    Bucket = new ObjectStorageS3BucketName("my-test-bucket"),
    Directory = "dir/sub_dir/sub_sub_dir/",
    FileName = "may-test-image.png"
};

var result = await _objectStorage.UploadAsync(content, parameters);

Showing the top 20 packages that depend on Expero.Libraries.CSharp.ObjectStorage.S3.

Packages Downloads
Expero.Libraries.CSharp.Logging
Пакет для работы с логированием.
1

Version Downloads Last updated
2.6.1 1 02/28/2026
2.6.0 1 02/28/2026
2.5.3-beta.58518 1 02/28/2026
2.5.3-beta.57288 1 02/28/2026
2.5.2 1 02/28/2026
2.5.0 1 02/28/2026
2.5.0-beta.34859 1 02/28/2026
2.5.0-beta.33792 1 02/28/2026
2.4.0 1 02/28/2026
2.4.0-beta.33162 1 02/28/2026
2.3.0 1 02/28/2026
2.3.0-beta.33748 1 02/28/2026
2.3.0-beta.27470 1 02/28/2026
2.3.0-beta.19871 1 02/28/2026
2.2.0 1 02/28/2026
2.2.0-beta.11069 1 02/28/2026
2.2.0-beta.11067 1 02/28/2026
2.1.0 1 02/28/2026
2.0.0 1 02/28/2026
1.3.0-beta.9026 1 02/28/2026
1.2.0 1 02/28/2026
1.1.0 1 02/28/2026
1.1.0-beta.7640 1 02/28/2026
1.0.0 1 02/28/2026
1.0.0-beta.7635 1 02/28/2026
1.0.0-beta.7633 1 02/28/2026