0
0
ExpressHow-ToBeginner · 4 min read

How to Limit File Size in Express: Simple Guide

To limit file size in Express, use middleware like multer with the limits option to set a maximum file size. Alternatively, for JSON or urlencoded bodies, use express.json({ limit: 'size' }) or express.urlencoded({ limit: 'size' }) to restrict request body size.
📐

Syntax

Use multer middleware with the limits option to restrict file size during uploads. For example, limits: { fileSize: maxSizeInBytes } sets the maximum allowed file size.

For JSON or URL-encoded data, use express.json({ limit: 'size' }) or express.urlencoded({ limit: 'size' }) to limit the request body size.

javascript
import express from 'express';
import multer from 'multer';

const upload = multer({
  limits: { fileSize: 1 * 1024 * 1024 } // 1 MB limit
});

const app = express();

app.use(express.json({ limit: '1mb' }));
app.use(express.urlencoded({ limit: '1mb', extended: true }));
💻

Example

This example shows how to limit uploaded file size to 1 MB using multer. If the file is larger, Express returns an error.

javascript
import express from 'express';
import multer from 'multer';

const app = express();

const upload = multer({
  limits: { fileSize: 1 * 1024 * 1024 } // 1 MB
});

app.post('/upload', upload.single('file'), (req, res) => {
  res.send('File uploaded successfully');
});

// Error handling middleware for multer file size limit
app.use((err, req, res, next) => {
  if (err.code === 'LIMIT_FILE_SIZE') {
    return res.status(413).send('File size exceeds 1 MB limit');
  }
  next(err);
});

app.listen(3000, () => {
  console.log('Server running on http://localhost:3000');
});
Output
Server running on http://localhost:3000
⚠️

Common Pitfalls

  • Not handling errors from multer causes the server to crash or hang when file size exceeds the limit.
  • Setting limits only on express.json() or express.urlencoded() does not limit file uploads; use multer for multipart/form-data.
  • For multiple files, limits apply per file, not total upload size.
javascript
/* Wrong: No error handling for file size limit */
app.post('/upload', upload.single('file'), (req, res) => {
  res.send('File uploaded');
});

/* Right: Add error handling middleware */
app.use((err, req, res, next) => {
  if (err.code === 'LIMIT_FILE_SIZE') {
    res.status(413).send('File too large');
  } else {
    next(err);
  }
});
📊

Quick Reference

File size limit options:

  • multer({ limits: { fileSize: bytes } }) - limits single file size
  • express.json({ limit: 'size' }) - limits JSON body size
  • express.urlencoded({ limit: 'size' }) - limits URL-encoded body size

Error code for file size limit: LIMIT_FILE_SIZE

Key Takeaways

Use multer's limits.fileSize option to restrict uploaded file size in Express.
Always add error handling middleware to catch file size limit errors from multer.
express.json() and express.urlencoded() limits only affect request body size, not file uploads.
File size limits apply per file, not total upload size when using multer.
Set limits early in middleware to prevent large files from consuming server resources.