Validation di Node.js dan Express.js
File Upload Validation
const multer = require("multer");
const path = require("path");
const storage = multer.diskStorage({
destination: "uploads/",
filename: (req, file, cb) => {
const uniqueSuffix = Date.now() + "-" + Math.round(Math.random() * 1e9);
cb(
null,
file.fieldname + "-" + uniqueSuffix + path.extname(file.originalname),
);
},
});
const upload = multer({
storage: storage,
limits: {
fileSize: 5 * 1024 * 1024,
},
fileFilter: (req, file, cb) => {
const allowedTypes = /jpeg|jpg|png|gif/;
const extname = allowedTypes.test(
path.extname(file.originalname).toLowerCase(),
);
const mimetype = allowedTypes.test(file.mimetype);
if (extname && mimetype) {
return cb(null, true);
} else {
cb(new Error("Only images are allowed (jpeg, jpg, png, gif)"));
}
},
});
app.post("/upload", upload.single("avatar"), (req, res) => {
if (!req.file) {
return res.status(400).json({ error: "No file uploaded" });
}
res.json({ message: "File uploaded", filename: req.file.filename });
});