Multer None Method: Handling Only Text Data
Multer is primarily used for file uploads, but it also provides a way to handle only text form data using the upload.none() method.
What is upload.none() in Multer?
upload.none() is a Multer middleware that:
- Accepts only text fields
- Rejects all file uploads
- Parses
multipart/form-datarequests
Example:
const multer = require("multer");
const upload = multer();
app.post("/submit", upload.none(), (req, res) => {
res.json(req.body);
});
When should I use Multer without file uploads?
Use upload.none() when:
- Your form uses
multipart/form-data - You are not uploading files
- You only need to process text fields
Common scenarios:
- Forms with rich text editors
- Forms that may optionally include files (but currently don’t)
- APIs expecting multipart data
How to handle only text form data with Multer?
With upload.none(), all form fields are available in:
req.body
Example:
app.post("/submit", upload.none(), (req, res) => {
const { name, email } = req.body;
res.json({
message: "Form received",
name,
email,
});
});
What happens if a file is sent with upload.none()?
If a file is included in the request:
- Multer will reject the request
- A
MulterErroris thrown (LIMIT_UNEXPECTED_FILE) - The route handler will not execute unless handled
Example handling:
app.post("/submit", (req, res) => {
upload.none()(req, res, function (err) {
if (err) {
return res.status(400).json({
message: "File uploads are not allowed",
error: err.message,
});
}
res.json(req.body);
});
});
Complete Example
const express = require("express");
const multer = require("multer");
const app = express();
const upload = multer();
app.post("/submit", upload.none(), (req, res) => {
res.json({
message: "Text data received successfully",
data: req.body,
});
});
app.listen(3000, () => {
console.log("Server running on port 3000");
});
Key Takeaways
upload.none()handles only text fields- Useful for
multipart/form-datawithout files - Data is available in
req.body - Sending files will trigger a Multer error