Direct-to-S3 / Azure tus 1.0 resume IndexedDB Golden Retriever 30 locales Webcam & screen capture

Getting started

From dotnet add package to a working chunked upload in about five minutes. Localhost needs no licence, so you can evaluate everything before deciding anything. Not sure you need a component at all? CoreUpload vs IFormFile makes the case both ways.

1. Install

dotnet add package CoreUpload

Or download the full package — a ready-to-run demo app with 100+ examples and a local NuGet feed.

2. Wire the services and endpoints

// Program.cs
builder.Services.AddCoreUpload(options => {
    options.MaxFileSizeBytes = 500 * 1024 * 1024;
    options.AllowedExtensions = new[] { ".jpg", ".png", ".pdf", ".zip" };
});

var app = builder.Build();
app.MapRazorPages();
app.MapCoreUploadEndpoints();   // upload, chunk, chunk/status, tus, s3/azure/gcs signing
app.Run();

3. Enable the Tag Helper

@* _ViewImports.cshtml *@
@addTagHelper *, CoreUpload

4. Drop it on a page

<core-upload asp-upload-url="/api/upload/upload"
             asp-multiple="true"
             asp-chunked="true"
             asp-chunk-size="5MB"
             asp-progress="true"
             asp-drop-zone="true"></core-upload>

That is a multi-file, drag-and-drop, chunked uploader with progress, retries and validation. Everything else — resume, direct-to-cloud, image editing, capture sources — is more attributes, not more architecture.

5. Handle the result

Files land in temp storage with a GUID. Promote them when your form actually saves:

public async Task OnPostAsync([FromServices] IUploadService uploads, string fileGuids)
{
    foreach (var id in fileGuids.Split(','))
        await uploads.MoveFileAsync(Guid.Parse(id), $"documents/{id}");
}

Where next