36 lines
901 B

  1. import multer from "multer";
  2. import path from "path";
  3. // Konfigurasi storage
  4. const storage = multer.diskStorage({
  5. destination: (req, file, cb) => {
  6. cb(null, "uploads/"); // Folder penyimpanan
  7. },
  8. filename: (req, file, cb) => {
  9. cb(null, file.fieldname + "-" + Date.now() + "-" + file.originalname);
  10. },
  11. });
  12. // Filter jenis file
  13. const fileFilter = (req, file, cb) => {
  14. const allowedTypes = /jpeg|jpg|png|gif/;
  15. const extname = allowedTypes.test(
  16. path.extname(file.originalname).toLowerCase()
  17. );
  18. const mimetype = allowedTypes.test(file.mimetype);
  19. if (mimetype && extname) {
  20. return cb(null, true);
  21. } else {
  22. cb(new Error("Only images (jpeg, jpg, png, gif) are allowed"));
  23. }
  24. };
  25. //for multiple images
  26. const upload = multer({
  27. storage: storage,
  28. limits: { fileSize: 5 * 1024 * 1024 }, // Maksimal 5MB per file
  29. fileFilter: fileFilter,
  30. });
  31. export default upload;