DEV Community

Sabir Sheikh
Sabir Sheikh

Posted on

Node JS Upload Multiple Files

You can upload multiple files using multer in Node.js and return their filenames. Here's how:

1. Setup Express & Multer
Install dependencies:

npm install express multer cors
Enter fullscreen mode Exit fullscreen mode

2. Configure the Server
Set up an Express server with multer:

const express = require('express');
const multer = require('multer');
const cors = require('cors');

const app = express();
app.use(cors());

const storage = multer.diskStorage({
    destination: './uploads/',
    filename: (req, file, cb) => {
        cb(null, Date.now() + '-' + file.originalname);
    }
});

const upload = multer({ storage: storage });

app.post('/upload', upload.array('files', 10), (req, res) => {
    const filenames = req.files.map(file => file.filename);
    res.json({ message: 'Files uploaded successfully', filenames });
});

app.listen(3000, () => console.log('Server running on port 3000'));
Enter fullscreen mode Exit fullscreen mode

3. Frontend Fetch Request
Send multiple files using fetch:

<input type="file" id="fileInput" multiple>
<button onclick="uploadFiles()">Upload</button>

<script>
function uploadFiles() {
    const fileInput = document.getElementById('fileInput');
    const files = fileInput.files;
    const formData = new FormData();

    for (let file of files) {
        formData.append('files', file);
    }

    fetch('http://localhost:3000/upload', {
        method: 'POST',
        body: formData
    })
    .then(response => response.json())
    .then(data => console.log('Uploaded Files:', data.filenames))
    .catch(error => console.error('Error:', error));
}
</script>

Enter fullscreen mode Exit fullscreen mode

4. Running the Project
Start your server (node server.js).

Open the HTML file in your browser.

Select multiple files and click "Upload."

Top comments (1)

Some comments may only be visible to logged-in visitors. Sign in to view all comments.