Monday, March 17, 2025

multer rename file express.js

 const multer = require('multer');

const path = require('path');


// Konfigurasi penyimpanan multer

const storage = multer.diskStorage({

  destination: (req, file, cb) => {

    cb(null, 'uploads/'); // Folder tujuan penyimpanan file

  },

  filename: (req, file, cb) => {

    // Mengganti nama file

    const uniqueSuffix = Date.now() + '-' + Math.round(Math.random() * 1E9);

    const fileExtension = path.extname(file.originalname); // Ambil ekstensi file asli

    const newFileName = `image-${uniqueSuffix}${fileExtension}`; // Nama file baru

    cb(null, newFileName);

  }

});


// Fungsi untuk memfilter tipe file

const fileFilter = (req, file, cb) => {

  // Tipe MIME yang diizinkan untuk gambar

  const allowedTypes = ['image/jpeg', 'image/png', 'image/gif'];

  

  if (allowedTypes.includes(file.mimetype)) {

    // File diterima

    cb(null, true);

  } else {

    // File ditolak

    cb(new Error('Hanya file gambar (JPEG, PNG, GIF) yang diizinkan!'), false);

  }

};


// Inisialisasi multer dengan storage dan filter

const upload = multer({

  storage: storage,

  fileFilter: fileFilter,

  limits: { fileSize: 5 * 1024 * 1024 } // Opsional: batas ukuran file 5MB

});


// Endpoint untuk mengunggah file

app.post('/upload', upload.single('file'), (req, res) => {

  res.send('File gambar berhasil diunggah dengan nama baru!');

}, (err, req, res, next) => {

  // Penanganan error

  if (err instanceof multer.MulterError) {

    return res.status(400).send('Terjadi kesalahan saat mengunggah file: ' + err.message);

  } else if (err) {

    return res.status(400).send(err.message);

  }

  next();

});


// Jalankan server

app.listen(3000, () => {

  console.log('Server berjalan di port 3000');

});

No comments:

Post a Comment

Set Cookie dan Remove Cookie dengan php vanilla.js

< html lang = "en" > < head >     < meta charset = "UTF-8" >     < meta name = "viewport...