Jump into concepts and practice - no test required
or
Recommended
Test this pattern10 questions across easy, medium, and hard to know if this pattern is strong
Multer middleware setup
📖 Scenario: You are building a simple Express server that accepts file uploads from users. To handle file uploads safely and easily, you will use the multer middleware.This project will guide you step-by-step to set up multer in your Express app.
🎯 Goal: Build an Express server with multer middleware configured to accept single file uploads under the field name profilePic.
📋 What You'll Learn
Create an Express app instance
Import and configure multer middleware with a destination folder
Use multer middleware in a POST route to handle single file upload with field name 'profilePic'
Send a success response after file upload
💡 Why This Matters
🌍 Real World
File uploads are common in web apps for user profile pictures, documents, or media. Multer helps handle these uploads safely and easily.
💼 Career
Backend developers often need to implement file upload features using Express and multer in real projects.
Progress0 / 4 steps
1
Create Express app and import multer
Write code to import express and multer modules, then create an Express app instance called app.
Express
Hint
Use require('express') and require('multer') to import modules. Then call express() to create the app.
2
Configure multer storage destination
Create a multer storage configuration that saves uploaded files to a folder named uploads/. Then create a multer instance called upload using this storage.
Express
Hint
Use multer.diskStorage to set the destination folder. Then pass this storage to multer() to create the upload middleware.
3
Add POST route with multer middleware
Add a POST route at /upload that uses the upload.single('profilePic') middleware to handle a single file upload with field name profilePic. The route handler should send a JSON response with message 'File uploaded successfully'.
Express
Hint
Use app.post with the path '/upload'. Add upload.single('profilePic') as middleware. Then send a JSON response inside the handler.
4
Start the Express server
Add code to start the Express server listening on port 3000. Use app.listen with port 3000 and a callback function.
Express
Hint
Use app.listen(3000, () => { ... }) to start the server and log a message.
Practice
(1/5)
1. What is the primary purpose of the multer middleware in an Express application?
easy
A. To serve static files like images and CSS
B. To parse JSON data in request bodies
C. To handle file uploads from client requests
D. To manage user sessions and cookies
Solution
Step 1: Understand middleware role
Multer is middleware designed specifically to handle multipart/form-data, which is used for uploading files.
Step 2: Compare with other middleware
Other middleware like body-parser handle JSON, and express.static serves static files, but multer focuses on file uploads.
Final Answer:
To handle file uploads from client requests -> Option C
Quick Check:
Multer = file upload handler [OK]
Hint: Multer is for file uploads, not JSON or sessions [OK]
Common Mistakes:
Confusing multer with body-parser for JSON parsing
Thinking multer manages sessions or cookies
Assuming multer serves static files
2. Which of the following is the correct way to set up multer to accept a single file upload with the field name 'avatar'?
easy
A. const upload = multer().single('avatar');
B. const upload = multer.single('avatar');
C. const upload = multer().array('avatar');
D. const upload = multer().multi('avatar');
Solution
Step 1: Correct multer initialization
Multer must be called as a function to create an instance: multer().
Step 2: Use .single() for single file
To accept one file, use upload.single('fieldname'). Here, 'avatar' is the field name.
Final Answer:
const upload = multer().single('avatar'); -> Option A
Quick Check:
multer() + .single('avatar') = correct setup [OK]
Hint: Always call multer() before .single() or .array() [OK]
B. Using req.files instead of req.file for single file upload
C. Missing call to multer() function
D. upload.single() should be upload.array() for single file
Solution
Step 1: Check multer method used
upload.single('file') handles one file and stores it in req.file (singular).
Step 2: Identify incorrect property usage
The code logs req.files (plural), which is undefined for single file uploads.
Final Answer:
Using req.files instead of req.file for single file upload -> Option B
Quick Check:
single() sets req.file, not req.files [OK]
Hint: Use req.file for single, req.files for multiple uploads [OK]
Common Mistakes:
Confusing req.file and req.files
Not calling multer() before .single()
Using upload.array() when single file expected
5. You want to customize multer to store uploaded files in a folder named 'images' and rename each file to include the current timestamp before the original filename. Which setup correctly achieves this?