Learn how to handle file uploads in Node.js using Express framework.
In a previous blog post, How to Upload a File Using Fetch, we discussed how to upload files to a server using the Fetch API. In this post, we will focus on using Node.js, specifically Express, to handle uploaded files.
To get started, you will need to install the express-fileupload
npm module:
npm install express-fileupload
Once installed, add it to your middleware. Here are two ways to do it:
import fileupload from 'express-fileupload';
// or
const fileupload = require('express-fileupload');
app.use(
fileupload()
// ...
);
Make sure to include this middleware in your Express app, as it allows the server to parse file uploads.
When a file is uploaded, it will be available under req.files
. If you forget to add the express-fileupload
middleware, req.files
will be undefined
.
Now, let’s take a look at an example route for saving an image:
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;
}
res.writeHead(200, { 'Content-Type': 'application/json' });
res.end(JSON.stringify({ status: 'success', path: '/images/' + image.name }));
});
});
This is the minimal code required to handle file uploads in Node.js. We use the mv
property provided by the express-fileupload
module to move the uploaded file to the specified path. Then, we send a response to the client indicating the success or error status of the upload.
Tags: Node.js, file uploads, Express, middleware, express-fileupload