ExpressJS:upload multiple files
Afin d'upload files dans le serveurs on doit :
- Créer le dossier publics/uploads dans la racine
- Spécifier dans le serveur que le dossier publics/uploads est statique
- Installer un module qui permet de télécharger les fichiers ,file_upload ou multer
Installer multer
Serveur.js
const express = require('express');
const multer = require('multer');
const path = require('path');
const app = express();
/*public est un dossier dans la racine du projet contenant les ressources statiques*/
app.use(express.static('publics'));
//télécharger des fichier avec multer
const storage = multer.diskStorage({
destination: function(req, file, cb) {
cb(null, 'publics/uploads/');
},
filename: function(req, file, cb) {
cb(null, file.fieldname + '-' + Date.now() + path.extname(file.originalname));
}
});
var upload = multer({ storage: storage })
//créer une route pour affficher le formulaire
app.get('/upload', (req, res) => {
res.sendFile(__dirname + '/views/upload.html');
});
//récuppérer les fichiers envoyer par le client
app.post('/save', upload.array('multi-files'), (req, res) => {
res.redirect('/upload');
});
app.listen(8081);
views/upload.html
<!DOCTYPE html>
<html lang="en">
<head>
<title></title>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
</head>
<body>
<h1></h1>
<form action="/save" enctype="multipart/form-data" method="post">
<input type="file" name="multi-files" multiple>
<input type="submit" value="Upload">
</form>
</body>
</html>