← Back to list

Multer Storage Configuration Guide

What is Multer?

Tawfiq Sirajudeen · 2025-09-14 14:02 · 1 claps · 2.7 min read
#multer #nodejs-fil #multipart-form-data #data-handling #express-fileupload
Open on Medium ↗
Wiki topics: RAG · RAG & Retrieval 🌐 · Web Development 📰 · Journalism & News

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 object
  • file - Information about the uploaded file
  • cb - 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 file
  • filename - Generated filename
  • size - File size in bytes
  • mimetype - 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 Buffer
  • originalname - Original filename from user
  • size - File size in bytes
  • mimetype - 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