MERN

⌘K
  1. Home
  2. Docs
  3. MERN
  4. imageupload

imageupload

npm install multer

postRoute.js

const multer = require("multer");
const path = require('path');
const fs = require('fs');

// Set up multer for file uploads
const storage = multer.diskStorage({
    destination: (req, file, cb) => {
      cb(null, 'uploads/'); // Create an 'uploads' directory in your project
    },
    filename: (req, file, cb) => {
      const fileName = 'post_' + Date.now() + path.extname(file.originalname);
      cb(null, fileName);
    },
  });
  
const upload = multer({ storage });

Update Post Route

postRoute.post('/', verifyToken, upload.single('photo'),async (req, res) => {
    try {
        const { title, content, category } = req.body;
        const photo = req.file ? req.file.filename : undefined;

        const userId = req.userId;

        let username = "admin";  // Default username in case user is not found

        if (userId) {
            // If userId is available, try to get the username from the user
            const user = await User.findById(userId);
            if (user) {
                username = user.username;
            }
        }

        const newPost = new Post({ title, content, username, category,photo  });
        await newPost.save();
        res.status(201).json({ message: "Post Created" });
    } catch (error) {
        console.error(error);
        res.status(500).json({ error: "Internal Server Error" });
    }
});

How can we help?