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
multercauses the server to crash or hang when file size exceeds the limit. - Setting limits only on
express.json()orexpress.urlencoded()does not limit file uploads; usemulterfor 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 sizeexpress.json({ limit: 'size' })- limits JSON body sizeexpress.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.