Express.js and File Uploads
Handling file uploads in web applications is a common requirement. This guide covers key concepts, examples, and best practices for implementing file uploads in Express.js applications.
Key Concepts of File Uploads
- Multipart Form Data: A way to send files and form data in a single request.
- Middleware: Middleware like
multer
is used to handle file uploads in Express.js. - Storage: Define where and how files should be stored, whether on disk or in memory.
Setting Up File Uploads
Implement file uploads in an Express.js application using the multer
middleware:
Example: Basic Setup
// Install necessary packages
// npm install express multer
// server.js
const express = require('express');
const multer = require('multer');
const path = require('path');
const app = express();
const port = 3000;
// Set up multer for file uploads
const storage = multer.diskStorage({
destination: (req, file, cb) => {
cb(null, 'uploads/');
},
filename: (req, file, cb) => {
cb(null, `${Date.now()}-${file.originalname}`);
}
});
const upload = multer({ storage });
app.use(express.static('public'));
// File upload endpoint
app.post('/upload', upload.single('file'), (req, res) => {
res.send({ message: 'File uploaded successfully', file: req.file });
});
app.listen(port, () => {
console.log(`Server running at http://localhost:${port}/`);
});
// Ensure the 'uploads' directory exists
const fs = require('fs');
const dir = './uploads';
if (!fs.existsSync(dir)){
fs.mkdirSync(dir);
}
// public/index.html
File Upload Example
File Upload Example