How to handle file uploads in Node.js

🆕 🔜 Check this out if you dream of running a solo Internet business 🏖️

How to use Node.js and in particular Express to handle uploaded files

In how to upload a file using Fetch I explained how to upload a file to a server using Fetch.

In this post I’m going to show you part 2: how to use Node.js, and in particular Express, to handle uploaded files.

Install the express-fileupload npm module:

npm install express-fileupload

and add it to your middleware:

import fileupload from 'express-fileupload'


const fileupload = require('express-fileupload')

After you created your Express app, add:


This is needed because otherwise the server can’t parse file uploads.

Now uploaded files are provided in req.files. If you forget to add that middleware, req.files would be undefined.'/saveImage', (req, res) => {
  const image = req.files.myFile
  const path = __dirname + '/images/' +, (error) => {
    if (error) {
      res.writeHead(500, {
        'Content-Type': 'application/json'
      res.end(JSON.stringify({ status: 'error', message: error }))

    res.writeHead(200, {
      'Content-Type': 'application/json'
    res.end(JSON.stringify({ status: 'success', path: '/images/' + }))

This is the smallest amount of code needed to handle files.

We call the mv property of the uploaded image. That is provided to us by the express-fileupload module. We move it to path and then we communicate the success (or an error!) back to the client.