CoreUpload vs Dropzone.js
Dropzone.js is one of the best-known drag-and-drop uploaders: small, dependency-free and easy to drop into any page. The two projects aim at different scopes.
Dropzone gives you a beautiful drop target and a simple, well-understood upload flow with very little code. For "let users attach a few files and POST them", that is often exactly the right amount of library.
CoreUpload targets the harder end of the problem: multi-gigabyte files, unreliable connections, resumable transfers, browser-to-cloud uploads, and the ASP.NET Core endpoints that receive them.
Choose Dropzone when the requirement is genuinely a drop zone. Choose CoreUpload when "the upload failed at 80% of a 4 GB file" has to have a good answer.
Scope comparison
| Dimension | Dropzone.js | CoreUpload |
|---|---|---|
| Primary aim | A lightweight drag-and-drop file input with previews. | An end-to-end upload subsystem for ASP.NET Core. |
| Server side | You write the endpoint (and the chunk reassembly if you enable chunking). | Endpoints ship with the package via app.MapCoreUploadEndpoints(). |
| Large files | Chunking is supported; assembly and resume are your responsibility. | Chunked transport with server assembly, plus a server-verified resume probe. |
| Interrupted uploads | Handled in your own code. | IndexedDB persistence resumes across a reload; tus for protocol-level resume. |
| Direct-to-cloud | Possible with your own signing endpoint. | Built-in S3 multipart, Azure Blob and GCS resumable strategies. |
| Instant upload (dedupe) | Not built in. | Opt-in SHA-256 dedupe (instantUpload): content the server already stores completes instantly with zero bytes transferred; the server hashes stored uploads itself. |
| Blazor | JavaScript library - no Blazor component. | Ships a native <CoreUploader /> Blazor component (Server + WebAssembly) with typed C# events, in the same NuGet package. |
| Licensing | Open source (MIT). | Commercial licence; free on localhost for evaluation. |
What you would otherwise build yourself
If you start from a client-only uploader and the requirements grow, this is the list that tends to appear. In CoreUpload each item is shipped and demoed:
Receiving parts, ordering them, verifying which ones actually landed before assembling. Demo
Persisting the queue and the bytes, then continuing at the right offset. Demo
Backoff, honouring Retry-After, and not retrying permanent 4xx failures. Demo
Magic-byte sniffing, because .jpg in the filename proves nothing. Demo