Comment gérer les téléchargements de fichiers dans Node.js

Comment utiliser Node.js et en particulier Express pour gérer les fichiers téléchargés

Danscomment télécharger un fichier à l'aide de FetchJ'ai expliqué comment télécharger un fichier sur un serveur en utilisantAller chercher.

Dans cet article, je vais vous montrer la partie 2: comment utiliserNode.js, et en particulierExpress, pour gérer les fichiers téléchargés.

Installez leexpress-fileuploadmodule npm:

npm install express-fileupload

et ajoutez-le à votre middleware:

import fileupload from 'express-fileupload'

//or const fileupload = require(‘express-fileupload’)

Après avoir créé votre application Express, ajoutez:

app.use(
  fileupload(),
  //...

Ceci est nécessaire car sinon le serveur ne peut pas analyser les téléchargements de fichiers.

Les fichiers téléchargés sont désormais fournis dansreq.files. Si vous oubliez d'ajouter ce middleware,req.filesseraitundefined.

app.post('/saveImage', (req, res) => {
  const image = req.files.myFile
  const path = __dirname + '/images/' + image.name

image.mv(path, (error) => { if (error) { console.error(error) res.writeHead(500, { ‘Content-Type’: ‘application/json’ }) res.end(JSON.stringify({ status: ‘error’, message: error })) return }

<span style="color:#a6e22e">res</span>.<span style="color:#a6e22e">writeHead</span>(<span style="color:#ae81ff">200</span>, {
  <span style="color:#e6db74">'Content-Type'</span><span style="color:#f92672">:</span> <span style="color:#e6db74">'application/json'</span>
})
<span style="color:#a6e22e">res</span>.<span style="color:#a6e22e">end</span>(<span style="color:#a6e22e">JSON</span>.<span style="color:#a6e22e">stringify</span>({ <span style="color:#a6e22e">status</span><span style="color:#f92672">:</span> <span style="color:#e6db74">'success'</span>, <span style="color:#a6e22e">path</span><span style="color:#f92672">:</span> <span style="color:#e6db74">'/images/'</span> <span style="color:#f92672">+</span> <span style="color:#a6e22e">image</span>.<span style="color:#a6e22e">name</span> }))

}) })

Il s'agit de la plus petite quantité de code nécessaire pour gérer les fichiers.

Nous appelons lemvpropriété de l'image téléchargée. Cela nous est fourni par leexpress-fileuploadmodule. Nous le déplaçons verspathpuis nous communiquons le succès (ou une erreur!) au client.

Téléchargez mon gratuitManuel de Node.js


Plus de didacticiels sur les nœuds: