Learn · v5.3
Concepts and problem-solving rather than product tours: the limits that break large uploads, the failures that are hard to diagnose, the rules that keep uploads safe, and what changes when you move to ASP.NET Core. Useful whether or not you use AjaxUploader.
The four limits that stop big uploads — maxRequestLength, maxAllowedContentLength, executionTimeout and proxy timeouts — why raising them is not enough, and how chunking removes the problem instead of moving it.
maxRequestLength
maxAllowedContentLength
executionTimeout
webkitdirectory and drag-and-drop traversal, where the folder tree gets lost, and recreating it safely in FileUploaded with the sanitized e.RelativePath.
FileUploaded
e.RelativePath
404.13, "maximum request length exceeded", uploads that die at exactly 100%, chunks that fail while single uploads work, files that vanish, and postbacks that eat the queue — symptom to cause.
Extension allowlists, storage outside the web root, server-generated file names, MIME magic-byte checks, antiforgery on every request, and resource limits that are enforced while writing.
A drop zone that also accepts folders, clipboard pastes and keyboard input — and why cancelling dragover is the step everyone misses.
dragover
Confirming an upload is a real image rather than a renamed file, resizing on the server, keeping transparency, and stripping EXIF before storage.
Handlers become endpoints, server events become DI-registered handlers, and Web.config limits become typed options. Plus how to run both stacks side by side without a data migration.
Web.config
What the built-in control does well, the four places teams outgrow it, and what a migration actually looks like.
Every member of the built-in control, the accept attribute it has no property for, and the size ceiling.
accept
Looking for code rather than concepts? The demo gallery is runnable, the how-to guides are scenario-based, and the class reference documents every property and event.