Skip to content

multer โ€‹

ไธ€ไธช node.js ไธญ้—ดไปถ๏ผŒ็”จไบŽๅค„็† multipart/form-data ็ฑปๅž‹็š„่กจๅ•ๆ•ฐๆฎ๏ผŒๅฎƒไธป่ฆ็”จไบŽไธŠไผ ๆ–‡ไปถใ€‚

bash
npm install multer
js
const multer = require('multer');
const path = require('path');

const storage = multer.diskStorage({
  destination: path.join(__dirname, '..', 'uploads'),
  filename: (req, file, cb) => {
    const ext = file.originalname.split('.').pop();
    cb(null, `${Date.now()}.${ext}`);
  },
});

const upload = multer({ 
    storage,
    limits: { fileSize: 2 * 1024 * 1024 }, // ้™ๅˆถๆ–‡ไปถๅคงๅฐ 2MB
    // ้™ๅˆถๆ–‡ไปถ็ฑปๅž‹๏ผˆๅชๅ…่ฎธๅ›พ็‰‡๏ผ‰
    fileFilter(req, file, cb) {
    if (!file.mimetype.startsWith('image/')) {
      return cb(new Error('ๅชๅ…่ฎธไธŠไผ ๅ›พ็‰‡'));
    }
    cb(null, true);
  },
});

module.exports = upload;
js
const express = require('express');
const upload = require('./upload/multer.config');
const path = require('path');

const app = express();

app.post('/upload', upload.single('file'), (req, res) => {
  res.json({
    filename: req.file.filename,
    url: `/uploads/${req.file.filename}`,
  });
});

app.use('/uploads', express.static(path.join(__dirname, 'uploads')));

app.listen(3000, () => console.log('Server running on 3000'));

Released under the MIT License.