ExpressJS:upload multiple files

Afin d'upload files dans le serveurs on doit :
  1. Créer le dossier publics/uploads dans la racine
  2. Spécifier dans le serveur que le dossier publics/uploads est statique
  3. Installer un module qui permet de télécharger les fichiers ,file_upload ou multer

Installer multer

npm install multer --save

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>

Run

node Serveur.js








Cours et TPs