File Upload with Multer
const multer = require('multer');
const upload = multer({ dest: 'uploads/' });
// Single file
app.post('/api/upload', upload.single('avatar'), (req, res) => {
res.json({ file: req.file });
});
// Multiple files
app.post('/api/upload/multiple', upload.array('photos', 5), (req, res) => {
res.json({ files: req.files });
});
Cloud Storage with S3
const { S3Client, PutObjectCommand } = require('@aws-sdk/client-s3');
const s3 = new S3Client({ region: 'us-east-1' });
async function uploadToS3(file) {
const key = `uploads/${Date.now()}_${file.originalname}`;
await s3.send(new PutObjectCommand({
Bucket: process.env.S3_BUCKET,
Key: key,
Body: file.buffer,
ContentType: file.mimetype
}));
return `https://${process.env.S3_BUCKET}.s3.amazonaws.com/${key}`;
}
Streaming Large Files
const fs = require('fs');
const { pipeline } = require('stream/promises');
app.get('/api/download/:filename', async (req, res) => {
const readStream = fs.createReadStream(`uploads/${req.params.filename}`);
res.setHeader('Content-Disposition', `attachment; filename=${req.params.filename}`);
await pipeline(readStream, res);
});
Ready to Level Up Your Coding Skills?
Join Coderz Club and learn to code with challenges, battles, and an AI mentor.
Join Coderz Club Free →