Maintenant nous avons notre serveur, cependant cela reste quelque chose de très basique et pas suffisant pour nos besoins, on va donc lui rajouter des dépendences afin d’atteindre notre but : le routing et l’upload

Partie 2 : Express

Tout d’abord, il faut créer 2 dossiers à la racine du projet :

$ mkdir upload api

le 1er va stocker les images tandis que le second va gérer la partie interface avec l’utilisateur: l’API

Ensuite on installe les dépendances :

$ npm install express multer --save

On sauve les dépendances dans le package.json afin que quelqu’un qui reprend le projet puisse installer de façon rapide ces dépendances.

Express va gérer le routing alors que multer s’occupe lui de l’upload des images


//content of api/app.js
const express = require('express')
const multer = require('multer')

const storage = multer.diskStorage({
destination: function (req, file, cb) {
cb(null, './uploads')
},
filename: (req, file, cb) => {
cb(null, `${Date.now()}.${file.mimetype.split('/')[1]}`)
}
})

const upload = multer({ storage })

const app = express()

app.post('/photos/upload', upload.array('photos'), function (req, res, next) {
// req.files is array of `photos` files
// req.body will contain the text fields, if there were any
// TODO: photos handling
})

module.exports = app
Explications :

Nous avons créé une route , qui,  sur l’url /photos/upload  télécharge et stocke les images qu’on lui envoie avec une requete POST . Le champs du formulaire ( le ‘name’) devra se nommer photos. On va aussi un peu changer index.js afin d’intégrer l’API dans l’application, on exporte donc notre module “app” pour l’importer dans le fichier principal:


//content of index.js
const http = require('http')
const port = 3000
const app = require('./api/app')

const server = http.createServer(app)

// bind the server on port
server.listen(port, (err) => {
if (err) {
return console.log('something bad happened', err)
}
console.log(`server is listening on ${port}`)
})

Vous trouverez le code ici
Dans la prochaine on va s’occuper de communiquer avec l’API de Clarifay afin de taguer les photos.