Skip to main content
.NET 6 · .NET 7 · .NET 8 · .NET 9

Vali-Blob

// cloud storage abstraction for .NET

One interface. Any provider. Full pipeline control.

AWSAzureGCPOCISupabaseLocalAWSAzureGCPOCISupabaseLocal
12packages
6providers
.NET 6+7+8+9supported
$dotnet add package Vali-Blob.Core

Everything you need for cloud storage

Built for .NET developers who need production-grade file handling without vendor lock-in.

01

Provider Abstraction

Switch between AWS S3, Azure Blob, GCP, OCI, Supabase, and Local storage with a single interface. Zero code changes when you migrate providers.

02

Storage Pipeline

Compose middleware layers: validation, compression, encryption, deduplication, virus scan, quota, and conflict resolution — all declarative.

03

Resumable Uploads

TUS-compatible chunked uploads with pluggable session stores: InMemory, Redis, or EF Core. Pause, resume, and recover from network failures.

04
🔒

AES-256 Encryption

Transparent encryption on upload and decryption on download. Keys and IVs are stored in file metadata — no extra infrastructure required.

05
🖼

Image Processing

Resize, convert formats, and generate thumbnails via SixLabors.ImageSharp middleware. Hook it into the pipeline in one line.

06
📡

Observability Ready

ActivitySource, Metrics, and structured events — plug in OpenTelemetry in one line and get full distributed tracing out of the box.

middleware chain

Composable storage pipeline

Add, remove, and reorder middleware without touching your business logic. Each layer is independent and fully testable.

UploadRequest
Validationsize · extension · content-type
Compressiongzip · deflate · brotli
🔒
EncryptionAES-256-CBC · per-file IV
ContentTypeDetectionmagic bytes · MIME sniff
DeduplicationSHA-256 · short-circuit
VirusScanClamAV · VirusTotal
Quotaper-user · per-provider
ConflictResolutionreplace · keep · rename
ProviderAWS · Azure · GCP · Local
StorageResult
Program.cs
12345678910111213141516
builder.Services.AddVali-Blob(o => {
o.DefaultProvider = "s3";
})
.AddProvider<AWSS3Provider>("s3", opts => {
opts.BucketName = "my-bucket";
opts.Region = "us-east-1";
})
.WithPipeline(p => p
.UseValidation(v => v.MaxFileSizeBytes = 100_000_000)
.UseCompression()
.UseEncryption(e => e.Key = secretKey)
.UseContentTypeDetection()
.UseDeduplication()
.UseVirusScan()
.UseConflictResolution(ConflictResolution.ReplaceExisting)
);
IStorageMiddlewareStoragePipelineBuilderIStorageProvider

12 NuGet packages. Install only what you need.

Each package is independent — add the providers and features your project requires.

Core interfaces, pipeline, result pattern, and DI extensions.

dotnet add package Vali-Blob.Core

Amazon S3 storage provider.

dotnet add package Vali-Blob.AWS

Azure Blob Storage provider.

dotnet add package Vali-Blob.Azure

Google Cloud Storage provider.

dotnet add package Vali-Blob.GCP

Oracle Cloud Infrastructure Object Storage provider.

dotnet add package Vali-Blob.OCI

Supabase Storage provider.

dotnet add package Vali-Blob.Supabase

Local filesystem provider — great for development.

dotnet add package Vali-Blob.Local

Redis resumable upload session store.

dotnet add package Vali-Blob.Redis

EF Core resumable upload session store (any database).

dotnet add package Vali-Blob.EFCore

In-memory provider and helpers for unit tests.

dotnet add package Vali-Blob.Testing

ASP.NET Core health check integration.

dotnet add package Vali-Blob.HealthChecks

Image processing middleware (resize, convert, thumbnails).

dotnet add package Vali-Blob.ImageSharp
FM

Built by

Felipe Montenegro

.NET developer and open-source contributor. Also the author of Vali-Mediator.