Files
Challenge_15_Magazijn_App_M…/routes/upload.js
2025-10-21 20:54:03 +02:00

43 lines
1.2 KiB
JavaScript

const express = require('express');
const multer = require('multer');
const path = require('path');
const { auth, adminOnly } = require('../middleware/auth');
const router = express.Router();
// Configure multer for image upload
const storage = multer.diskStorage({
destination: (req, file, cb) => {
cb(null, 'public/images/items/');
},
filename: (req, file, cb) => {
const uniqueSuffix = Date.now() + '-' + Math.round(Math.random() * 1E9);
cb(null, 'item-' + uniqueSuffix + path.extname(file.originalname));
}
});
const upload = multer({
storage: storage,
fileFilter: (req, file, cb) => {
if (file.mimetype.startsWith('image/')) {
cb(null, true);
} else {
cb(new Error('Not an image! Please upload an image.'), false);
}
}
});
// Upload image route
router.post('/', auth, adminOnly, upload.single('image'), async (req, res) => {
try {
if (!req.file) {
return res.status(400).json({ message: 'No file uploaded' });
}
const imageUrl = `/images/items/${req.file.filename}`;
res.json({ imageUrl });
} catch (error) {
res.status(500).json({ message: error.message });
}
});
module.exports = router;