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}");
}