</>
⌕
Mid #upload#multer#stream#s3

Upload file trong Node.js: multer, giới hạn và streaming lên storage

⚡ Trả lời nhanh

multer parse multipart/form-data. Luôn đặt limits (fileSize, files), kiểm tra mimetype/magic bytes và không tin tên file client. Với file lớn dùng diskStorage hoặc stream thẳng lên S3 thay vì memoryStorage để tránh tốn RAM; tốt nhất dùng presigned URL cho client upload trực tiếp.

const multer = require('multer');
const upload = multer({
  storage: multer.diskStorage({ destination: '/tmp/uploads' }),
  limits: { fileSize: 5 * 1024 * 1024, files: 1 },
  fileFilter: (req, file, cb) =>
    cb(null, ['image/png', 'image/jpeg'].includes(file.mimetype)),
});
app.post('/avatar', upload.single('file'), (req, res) => res.json({ size: req.file.size }));
Chiến lượcDùng khi
memoryStorageFile nhỏ, xử lý ngay (rủi ro OOM nếu nhiều request)
diskStorageFile vừa, cần xử lý sau
Stream tới S3 (busboy/multer-s3)File lớn, không giữ trên server
Presigned URLClient upload thẳng, server chỉ ký URL
🃏 Ôn bằng flashcard