enhanced-multer-file-uploader
v1.0.1
Published
This package comes with default auto completed configuration of multer setup.
Readme
Enhanced Multer File Uploader
A simplified, enhanced wrapper around Multer for Node.js. This package provides easy configuration for file uploads with built-in validation, size limits, and flexible file naming strategies.
Features
- 🚀 Zero Config Defaults: Works out of the box with sensible defaults (5MB limit, image validation).
- 📂 Auto Directory Creation: Automatically creates the upload directory if it doesn't exist.
- 🛡️ Easy Validation: Simple array-based file type validation (extensions or mimetypes).
- 📏 Size Limits: Set file size limits in MB directly.
- 📝 Naming Strategies: Choose between 'timestamp', 'random', or 'original' filenames.
Installation
npm install enhanced-multer-file-uploaderUsage
Basic Usage
By default, this will save files to an uploads folder, limit size to 5MB, and only allow images (jpeg, jpg, png, gif, webp).
import express from 'express';
import { enhancedMulter } from 'enhanced-multer-file-uploader';
const app = express();
const upload = enhancedMulter();
app.post('/upload', upload.single('file'), (req, res) => {
res.json({ message: 'File uploaded successfully', file: req.file });
});
app.listen(3000, () => console.log('Server started on port 3000'));Advanced Configuration
Customize destination, size limits, allowed types, and file naming.
import { enhancedMulter } from 'enhanced-multer-file-uploader';
const upload = enhancedMulter({
destination: 'public/assets', // Save files to 'public/assets'
sizeLimitMB: 10, // 10MB limit
allowedTypes: ['pdf', 'docx'], // Only allow specific types
filenameParam: 'random', // Use random filenames
fileLimit: 5 // Limit number of files (for array/fields)
});
// Usage with multiple files
app.post('/upload-docs', upload.array('documents', 5), (req, res) => {
res.json({ files: req.files });
});API Reference
enhancedMulter(options)
Returns a configured Multer instance.
| Option | Type | Default | Description |
|--------|------|---------|-------------|
| destination | string | 'uploads' | Directory where files will be saved. Created automatically if missing. |
| sizeLimitMB | number | 5 | Maximum file size in Megabytes. |
| allowedTypes | string[] | Images | Array of allowed extensions (e.g., ['png']) or mimetypes. If omitted, defaults to standard image types. |
| filenameParam | string | 'timestamp' | Naming strategy: 'timestamp' (default), 'original', or 'random'. |
| fileLimit | number | undefined | Maximum number of files allowed (useful when using upload.array()). |
Naming Strategies (filenameParam)
- timestamp (Default):
fieldname-timestamp-random.ext(e.g.,avatar-1678901234-123456789.jpg) - random:
file-timestamp-random.ext(ignores fieldname, useful for privacy) - original:
originalName.ext(⚠️ Warning: can overwrite existing files with same name)
Error Handling
If a file type is rejected, Multer will pass an error to Express. You can catch it in an error handling middleware:
app.use((err, req, res, next) => {
if (err instanceof multer.MulterError) {
return res.status(400).json({ error: err.message });
} else if (err) {
return res.status(400).json({ error: err.message }); // "File type not allowed..."
}
next();
});License
ISC
