Reputation: 1
here the all the enteries are made except the images its showing as undefinedI’m working on an Express.js-based product management system where users can upload product details along with up to four images. I’ve integrated Multer for file uploads and set up the following routes:
/add
: To add a product with images.
/list
: To list all products.
/remove
: To remove a product.
/single
: To fetch a single product.Hi everyone,
The images are uploaded using Multer’s diskStorage
. Below is my current implementation.
const addProduct = async (req, res) => {
try {
const {
name,
description,
price,
category,
subCategory,
sizes,
bestseller
} = req.body;
const image1 = req.files.image1 && req.files.image1[0];
const image2 = req.files.image2 && req.files.image2[0];
const image3 = req.files.image3 && req.files.image3[0];
const image4 = req.files.image4 && req.files.image4[0];
console.log(name, description, price, category, subCategory, sizes, bestseller);
console.log(image1, image2, image3, image4);
res.json({ success: true, message: "Product added successfully!" });
} catch (error) {
console.error(error);
res.json({ success: false, message: "Something went wrong" });
}
};
const listProducts = async (req, res) => {};
const removeProduct = async (req, res) => {};
const singleProduct = async (req, res) => {};
export { addProduct, listProducts, removeProduct, singleProduct };
///productRoute.js
import express from 'express';
import { listProducts, addProduct, removeProduct, singleProduct } from '../controllers/productController.js';
import upload from '../middleware/multer.js';
const productRouter = express.Router();
productRouter.post('/list', listProducts);
productRouter.post('/add', upload.fields([
{ name: 'image1', maxCount: 1 },
{ name: 'image2', maxCount: 1 },
{ name: 'image3', maxCount: 1 },
{ name: 'image4', maxCount: 1 }
]), addProduct);
productRouter.post('/remove', removeProduct);
productRouter.post('/single', singleProduct);
export default productRouter;
//multer.js
`import multer from 'multer';
const storage = multer.diskStorage({
filename: function (req, file, callback) {
callback(null, file.originalname);
}
});
const upload = multer({ storage });
export default upload;
`
//server.js
import express from "express";
import dotenv from "dotenv";
import cors from "cors";
import connectDB from "./config/mongodb.js";
import connectCloudinary from "./config/cloudinary.js";
import userRouter from "./routes/userRoute.js";
import productRouter from "./routes/productRoute.js";
dotenv.config();
// Initialize app
const app = express();
const port = process.env.PORT || 4000;
// Connect to database and Cloudinary
connectDB();
connectCloudinary();
// Middlewares
app.use(express.json());
app.use(express.urlencoded({ extended: true }));
app.use(cors());
// Routes
app.use("/api/users", userRouter);
app.use("/api/products", productRouter);
// Default route
app.get("/", (req, res) => {
res.send("Hello, World!");
});
// Start the server
app.listen(port, () => {
console.log(`Server is running on port ${port}`);
});
Upvotes: 0
Views: 5