AI Workshop: learn to build apps with AI →
Image Processing: How to download and save an image using Node.js

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


I needed to download a file from the Internet and wanted to use await so I could easily do something else afterward.

You can do that using Axios.

import axios from 'axios'

Then write a download() function like this:

async function download(url, filepath) {
  const response = await axios({
    url,
    method: 'GET',
    responseType: 'stream',
  })
  return new Promise((resolve, reject) => {
    response.data
      .pipe(fs.createWriteStream(filepath))
      .on('error', reject)
      .once('close', () => resolve(filepath))
  })
}

Then call it:

const remote_url = 'https://...'
const local_path = './images/test.png'

await download(remote_url, local_path)

Lessons in this unit:

0: Introduction
1: How to create and save an image with Node.js and Canvas
2: How to download an image from URL in Node
3: ▶︎ How to download and save an image using Node.js
4: How to get an image width and height using Node
5: How to turn an image into a data URI string
6: How to download an image using Node.js
7: How to print a canvas to a data URL
8: Optimize images from a Node.js script
9: Calling the ImageOptim macOS app from a Node.js script