Posted on Updated on - Arjun

Download a file from NodeJS Server using ExpressJS

I this tutorial you will learn how to download files from your NodeJS server from your express js application. As your application is built using ExpressJS framework you don’t have to play around with http headers to allow downloads form your Node server. Express providing Helper function called res.download(path [, filename] [, fn]); It transfers the file at path as an “attachment”. Using this function you can easily allow file downloads from your application.

Download a file from NodeJS Server using ExpressJS

This function, transfers the file at path as an "attachment". Typically, browsers will prompt the user for download. By default, the Content-Disposition header "filename=" parameter is path (this typically appears in the browser dialog). Override this default with the filename parameter.

When an error occurs or transfer is complete, the method calls the optional callback function fn. This method uses res.sendFile() to transfer the file.

Script to Download a file

Step 1: Create a package.json file and install dependencies.

Step 2: create a file called index.js in root expressjs-download/index.js of project. And create a express server with route, it should accept file name in the URL.

Step 3: Run the application by issuing node index.js command from your terminal, you should be able to see the output "application is running at: http://localhost:8000" in your console and if you head over to the browser with http://localhost:8000/download/{filename}, you will get download prompt.

Here {filename} = name of the file including extension ( it will look for the file in expressjs-download/uploads directory)

Other resources

Getting Started with Express.js
Content-Disposition
How to serve static files with Express
File uploads in express js 4

I hope you like this Post, Please feel free to comment below, your suggestion and problems if you face - we are here to solve your problems.

Arjun
I am Arjun from Hyderabad (India). I have been working as a software engineer from last 7+ years, and its my passion to learn new things and implement them as a practice. Aside from work, I likes gardening and spending time with pets.
DMCA.com Protection Status