Headless.Blobs.Abstractions 0.4.15

dotnet add package Headless.Blobs.Abstractions --version 0.4.15
                    
NuGet\Install-Package Headless.Blobs.Abstractions -Version 0.4.15
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="Headless.Blobs.Abstractions" Version="0.4.15" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="Headless.Blobs.Abstractions" Version="0.4.15" />
                    
Directory.Packages.props
<PackageReference Include="Headless.Blobs.Abstractions" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add Headless.Blobs.Abstractions --version 0.4.15
                    
#r "nuget: Headless.Blobs.Abstractions, 0.4.15"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package Headless.Blobs.Abstractions@0.4.15
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=Headless.Blobs.Abstractions&version=0.4.15
                    
Install as a Cake Addin
#tool nuget:?package=Headless.Blobs.Abstractions&version=0.4.15
                    
Install as a Cake Tool

Headless.Blobs.Abstractions

Defines the unified interface for blob/file storage operations across different providers (AWS S3, Azure Blob, FileSystem, Redis, SFTP).

Problem Solved

Provides a provider-agnostic API for file storage operations, enabling seamless switching between cloud providers or local storage without changing application code.

Key Features

  • IBlobStorage - Core interface for all storage operations:
    • Upload blobs with metadata
    • Open read stream for downloading
    • Bulk upload/delete operations
    • Copy/Rename/Delete operations
    • Exists check and blob info retrieval
    • Paged listing with search patterns
  • IBlobNamingNormalizer - Provider-specific path normalization
  • Container/directory management
  • Metadata support

Installation

dotnet add package Headless.Blobs.Abstractions

Usage

public sealed class FileService(IBlobStorage storage)
{
    public async Task UploadAsync(Stream file, string fileName, CancellationToken ct)
    {
        await storage.UploadAsync(
            container: ["uploads", "images"],
            blobName: fileName,
            stream: file,
            metadata: new Dictionary<string, string?> { ["uploaded-by"] = "user-123" },
            cancellationToken: ct
        );
    }

    public async Task<string?> GetContentAsync(string fileName, CancellationToken ct)
    {
        // IMPORTANT: Dispose result promptly - holding it may exhaust connection pools
        await using var result = await storage.OpenReadStreamAsync(["uploads", "images"], fileName, ct);
        if (result is null) return null;

        using var reader = new StreamReader(result.Stream);
        return await reader.ReadToEndAsync(ct);
    }
}

Configuration

No configuration required. This is an abstractions-only package.

Dependencies

  • Headless.Extensions
  • Headless.Serializer.Json

Side Effects

None. This is an abstractions package.

Product Compatible and additional computed target framework versions.
.NET net10.0 is compatible.  net10.0-android was computed.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  net10.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages (6)

Showing the top 5 NuGet packages that depend on Headless.Blobs.Abstractions:

Package Downloads
Headless.Api.DataProtection

Package Description

Headless.Blobs.FileSystem

Package Description

Headless.Blobs.Aws

Package Description

Headless.Blobs.SshNet

Package Description

Headless.Blobs.Azure

Package Description

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
0.4.15 143 5/18/2026
0.4.14 145 5/18/2026