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

Image Upload

Upload images with live preview, client-side cropping, clipboard paste, and automatic thumbnail generation.

Image Upload Features

CoreUpload includes a complete client-side image processing pipeline. Resize, crop, rotate, compress, and watermark images in the browser before upload. Read EXIF metadata and auto-orient mobile photos. Preview images, paste from clipboard, and extract video thumbnails - all with zero server round-trips.

Preview

Instant thumbnails + lightbox

Crop & Rotate

Aspect-ratio lock, any angle

Resize & Compress

Max width/height, quality control

EXIF Auto-Orient

Read metadata, fix rotation

Watermark

Text overlay before upload

Paste

Ctrl+V from clipboard

Video Thumbnails

Extract frame from MP4/WebM

Dimension Check

Min/max width & height

Live Demo

Upload image files to see preview and thumbnail generation in action.

Drag & drop files here, or paste from clipboard

Code Example

Configure the uploader to accept only image file types using the allowed-extensions attribute.

Razor Page (Tag Helper)

<core-upload asp-upload-url="/api/upload/upload"
 asp-extensions=".jpg,.jpeg,.png,.gif,.bmp,.webp"
 asp-max-size="10MB"
 asp-multiple="true"
 asp-drop-zone="true"
 asp-thumbnails="true"
 asp-auto-orient="true">
</core-upload>

Client-Side Image Resize

<core-upload asp-upload-url="/api/upload/upload"
 asp-extensions=".jpg,.png,.webp"
 asp-resize-max-width="1920"
 asp-resize-max-height="1080"
 asp-resize-quality="0.85"
 asp-resize-format="jpeg"
 asp-auto-orient="true"
 asp-multiple="true"
 asp-thumbnails="true">
</core-upload>

Image Crop with Aspect Ratio

<core-upload asp-upload-url="/api/upload/upload"
 asp-extensions=".jpg,.png"
 asp-crop="true"
 asp-crop-aspect-ratio="16:9"
 asp-thumbnails="true">
</core-upload>

Server-Side Configuration

builder.Services.AddCoreUpload(options =>
{
 options.TempDirectory = Path.Combine(
 builder.Environment.ContentRootPath, "uploads", "images-temp");
 options.AllowedExtensions = new[]
 {
 ".jpg", ".jpeg", ".png", ".gif", ".bmp", ".webp"
 };
 options.AllowedMimeTypes = new[]
 {
 "image/jpeg", "image/png", "image/gif", "image/bmp", "image/webp"
 };
 options.MaxFileSizeBytes = 10L * 1024 * 1024; // 10 MB
});