Multer Storage Configuration Guide
What is Multer?
Multer Storage Configuration Guide

What is Multer?
Multer is Express.js middleware for handling multipart/form-data, primarily used for file uploads. It processes files from HTML forms and makes them available in your route handlers.
Installation
npm install multer
DiskStorage Configuration
DiskStorage saves uploaded files directly to your server’s file system. The files are written to disk and remain there until you delete them.
Basic Configuration
const multer = require('multer');
const diskStorage = multer.diskStorage({
destination: function (req, file, cb) {
cb(null, 'uploads/'); // Where files will be saved
},
filename: function (req, file, cb) {
cb(null, Date.now() + '-' + file.originalname); // How files will be named
}
});
const upload = multer({ storage: diskStorage });
How DiskStorage Works
destination function: Controls WHERE files are saved
req- The HTTP request objectfile- Information about the uploaded filecb- Callback function to specify the destination folder
filename function: Controls HOW files are named
- Without this, Multer generates random names
- Common pattern: timestamp + original name to avoid conflicts
When Files Are Created
Files are written to disk IMMEDIATELY when uploaded. Your route handler receives a req.file object containing:
path- Full path to the saved filefilename- Generated filenamesize- File size in bytesmimetype- File type (image/jpeg, text/plain, etc.)
Memory Usage
DiskStorage uses minimal RAM because files go directly to disk. Good for large files or servers with limited memory.
Persistence
Files survive server restarts and remain until manually deleted. Your application becomes “stateful” — tied to the specific server’s filesystem.
MemoryStorage Configuration
MemoryStorage keeps uploaded files in server memory as Buffer objects. No files are written to disk.
Basic Configuration
const multer = require('multer');
const memoryStorage = multer.memoryStorage();
const upload = multer({ storage: memoryStorage });
How MemoryStorage Works
Much simpler configuration — no destination or filename functions needed. Multer automatically stores file data in memory.
When Files Are Loaded
Files are loaded into RAM immediately when uploaded. Your route handler receives a req.file object containing:
buffer- The actual file data as a Bufferoriginalname- Original filename from usersize- File size in bytesmimetype- File type
Memory Usage
Each uploaded file consumes RAM equal to its size. A 10MB image uses 10MB of server memory until garbage collected.
Persistence
Files exist only while the server process runs. Server restart = files gone. Your application stays “stateless” — no dependency on local filesystem.
Key Differences Explained
File Location
- DiskStorage: Files saved to server hard drive
- MemoryStorage: Files held in server RAM
Configuration Complexity
- DiskStorage: Requires destination and filename configuration
- MemoryStorage: Single line configuration
File Access
- DiskStorage: Access via file path (
req.file.path) - MemoryStorage: Access via buffer (
req.file.buffer)
Server Resources
- DiskStorage: Uses disk space, minimal RAM
- MemoryStorage: Uses RAM, no disk space
Scalability
- DiskStorage: Harder to scale (files tied to specific servers)
- MemoryStorage: Easier to scale (stateless servers)
Usage Examples
DiskStorage Usage
app.post('/upload', upload.single('file'), (req, res) => {
// File is saved to disk at req.file.path
console.log('File saved to:', req.file.path);
});
MemoryStorage Usage
app.post('/upload', upload.single('file'), (req, res) => {
// File data is in req.file.buffer
console.log('File size in memory:', req.file.buffer.length);
// Now you can upload to cloud, process, etc.
});
When to Choose Each
Choose DiskStorage When:
- Building traditional web applications
- Need files to survive server restarts
- Working with very large files (videos, archives)
- Limited server RAM
- Files will be served directly from your server
Choose MemoryStorage When:
- Uploading files to cloud storage (AWS S3, Google Drive, etc.)
- Processing files before saving (resize images, convert formats)
- Building microservices or containerized applications
- Need horizontal scaling across multiple servers
- Working with small to medium files
File Size Considerations
DiskStorage: Can handle very large files because they don’t consume RAM. Only limited by available disk space.
MemoryStorage: File size limited by available server RAM. Multiple large files can crash your server if they exceed memory limits.
Performance Impact
DiskStorage: Slower due to disk I/O operations, but consistent performance regardless of file size.
MemoryStorage: Faster for small files (no disk writes), but performance degrades with large files or many simultaneous uploads.
메타데이터
- post_id
- 14ec4fc501b0
- slug
- multer-storage-configuration-guide-14ec4fc501b0
- url
- https://medium.com/@tawfiqsirajudeen.official/multer-storage-configuration-guide-14ec4fc501b0
- canonical_url
- https://medium.com/@tawfiqsirajudeen.official/multer-storage-configuration-guide-14ec4fc501b0
- author_url
- https://medium.com/@tawfiqsirajudeen.official
- status
- ok
- fetched_at
- 2026-06-24 11:06:28