File uploads.
Done right.
Make Uploads Effortless.
The Express.js upload middleware that handles AWS S3, Azure, GCS, Cloudinary, FTP & SFTP — with validation, compression & TypeScript in one clean config object.
npm install upload-smithCloud Providers
Config Object
Boilerplate
File Types
Everything you need.
Nothing you don't.
Stop patching together five libraries. Upload Smith gives you a production-ready upload pipeline in minutes.
6 Cloud Providers
AWS S3, Azure Blob, Google Cloud Storage, Cloudinary, FTP, and SFTP — all from one unified API.
Extension Validation
Whitelist exactly which file types are allowed per upload endpoint. Rejects everything else automatically.
Per-Extension Size Limits
Set different size caps for different file types — 5MB for images, 20MB for PDFs, 100MB for video.
Image Compression
Built-in Sharp integration compresses JPEG, PNG, WebP on the fly before uploading to cloud or disk.
URL Import
Download and process files directly from URLs. Supports domain whitelisting and blacklisting for security.
TypeScript Ready
First-class TypeScript support with full type inference for your config and return values.
One package.
Every cloud.
Switch providers by changing a single string. Your application code stays identical.
Go from zero to cloud
in 5 lines of code.
Deploy anywhere.
Three storage strategies to match any architecture — dev, prod, or hybrid.
Local Only
Files saved to disk. No cloud config needed. Perfect for development and simple apps.
no cloudStorage configCloud Only
Files go straight to cloud. No disk usage. Ideal for production and serverless deployments.
keepLocalCopy: falseCloud + Local Copy
Uploads to cloud AND saves a local copy. Great for backups and migration periods.
keepLocalCopy: trueWhy not just
use raw Multer?
Multer is great — Upload Smith just removes the 200 lines you'd write around it.
| Capability | Raw Multer | upload-smith |
|---|---|---|
| AWS S3 uploads | Manual SDK setup | ✓Built-in |
| Azure Blob Storage | X | ✓Built-in |
| Google Cloud Storage | X | ✓Built-in |
| Cloudinary | X | ✓Built-in |
| FTP / SFTP | X | ✓Built-in |
| Extension validation | Manual fileFilter | ✓Config option |
| Per-extension size limits | X | ✓Config option |
| Image compression | X | ✓Via Sharp |
| URL download support | X | ✓Built-in |
One install.
Ship everything.
Your next upload feature starts here.