0
0
Expressframework~5 mins

Storing files on disk vs memory in Express

Choose your learning style9 modes available
Introduction

We store files either on disk or in memory to handle uploads. Disk storage saves files on your server's hard drive. Memory storage keeps files temporarily in RAM.

When you want to save uploaded files permanently for later use.
When you need to process files quickly without saving them.
When your server has limited disk space but enough memory.
When you want to avoid writing files to disk for security reasons.
When you want to handle small files fast before deciding to save or discard.
Syntax
Express
const multer = require('multer');

// Disk storage setup
const storageDisk = multer.diskStorage({
  destination: function (req, file, cb) {
    cb(null, 'uploads/');
  },
  filename: function (req, file, cb) {
    cb(null, file.originalname);
  }
});

// Memory storage setup
const storageMemory = multer.memoryStorage();

const uploadDisk = multer({ storage: storageDisk });
const uploadMemory = multer({ storage: storageMemory });

Disk storage saves files physically on your server.

Memory storage keeps files in RAM as buffers, temporary and fast.

Examples
This route saves the uploaded file to disk in the 'uploads/' folder.
Express
app.post('/upload-disk', uploadDisk.single('file'), (req, res) => {
  res.send('File saved on disk: ' + req.file.path);
});
This route keeps the uploaded file in memory and shows its size.
Express
app.post('/upload-memory', uploadMemory.single('file'), (req, res) => {
  const fileBuffer = req.file.buffer;
  res.send('File received in memory, size: ' + fileBuffer.length + ' bytes');
});
Sample Program

This Express app has two routes: one saves uploaded files to disk, the other keeps them in memory. You can test by sending files to each route.

Express
const express = require('express');
const multer = require('multer');
const app = express();

// Disk storage setup
const storageDisk = multer.diskStorage({
  destination: (req, file, cb) => cb(null, 'uploads/'),
  filename: (req, file, cb) => cb(null, file.originalname)
});

// Memory storage setup
const storageMemory = multer.memoryStorage();

const uploadDisk = multer({ storage: storageDisk });
const uploadMemory = multer({ storage: storageMemory });

app.post('/upload-disk', uploadDisk.single('file'), (req, res) => {
  res.send('File saved on disk: ' + req.file.path);
});

app.post('/upload-memory', uploadMemory.single('file'), (req, res) => {
  const size = req.file.buffer.length;
  res.send('File received in memory, size: ' + size + ' bytes');
});

app.listen(3000, () => console.log('Server running on http://localhost:3000'));
OutputSuccess
Important Notes

Disk storage is better for large files or permanent saving.

Memory storage is faster but uses RAM and is temporary.

Always check file size limits to avoid memory overload.

Summary

Disk storage saves files physically on your server.

Memory storage keeps files temporarily in RAM for quick use.

Choose storage based on file size, speed, and persistence needs.