Express.js Masterclass
The Professional Backend Framework01.Home02.Introduction03.Express vs Native Node04.Express Generator05.Request Object (req)06.Response Object (res)07.Advanced Routing08.URL Params & Query09.Body Parsing10.Template Engines (EJS)11.Serving Static Files12.Middleware Architecture13.Must-Have Middleware14.File Uploads (Multer)15.Custom Error Handling16.Cookies & Sessions17.User Auth (Passport)18.Database Integration19.Data Validation20.Socket.io in Express21.Security & Helmet
File Uploads with Multer
Multer is a Node.js middleware for handling multipart/form-data, which is primarily used for uploading files.
1. Installation
npm install multer2. Basic Configuration
You can tell Multer where to store the files and what to name them.
const multer = require('multer');
const upload = multer({ dest: 'uploads/' });
app.post('/profile', upload.single('avatar'), (req, res) => {
// req.file is the `avatar` file
// req.body will hold the text fields, if there were any
res.send('File uploaded!');
});3. Advanced Disk Storage
For more control (like keeping original filenames or extensions), use diskStorage.
const storage = multer.diskStorage({
destination: function (req, file, cb) {
cb(null, './public/uploads')
},
filename: function (req, file, cb) {
cb(null, Date.now() + '-' + file.originalname)
}
});
const upload = multer({ storage: storage });4. Multiple Files
app.post('/photos/upload', upload.array('photos', 12), (req, res) => {
// req.files is array of photo files
});Security Warning: Always validate the file types (e.g., only allowing .jpg or .png) and set a file size limit to prevent malicious uploads from filling up your server disk.