AI Workshop: learn to build apps with AI →
Express: Send files to the client

Join the AI Workshop and learn to build real-world apps with AI. A hands-on, practical program to level up your skills.


Express provides a handy method to send a file as an attachment: res.download().

When a user hits a route that sends a file using this method, the browser will prompt for download.

The res.download() method sends a file in the response; the browser will save it to disk instead of displaying it in the page.

app.get('/', (req, res) => res.download('./file.pdf'))

In the context of an app:

const express = require('express')
const app = express()

app.get('/', (req, res) => res.download('./file.pdf'))
app.listen(3000, () => console.log('Server ready'))

You can set the file to be sent with a custom filename:

res.download('./file.pdf', 'user-facing-filename.pdf')

This method accepts a callback function that runs after the file has been sent:

res.download('./file.pdf', 'user-facing-filename.pdf', (err) => {
  if (err) {
    //handle error
    return
  } else {
    //do something
  }
})

Lessons in this unit:

0: Introduction
1: Introduction to Express
2: Request parameters
3: Send a response to the client
4: Send a JSON response
5: Manage cookies
6: Work with HTTP headers
7: Handling redirects
8: Routing
9: Template engines
10: Middleware
11: Serving Static Assets with Express
12: ▶︎ Send files to the client
13: Sessions
14: Validating and sanitizing input
15: Handling form data
16: Handling CORS
17: HTTPS with a self-signed certificate
18: HTTPS with Let's Encrypt
19: Handling file uploads
20: Build a REST API with MongoDB