How to download and save an image using Node.js
I had the need of downloading a file from the Internet, and I also wanted to use await
to do something else after in an easy way.
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 using
const remote_url = 'https://...'
const local_path = './images/test.png'
await download(remote_url, local_path)
→ Here's my latest YouTube video
→ Get my Node.js Handbook
→ I wrote 17 books to help you become a better developer, download them all at $0 cost by joining my newsletter
→ JOIN MY CODING BOOTCAMP, an amazing cohort course that will be a huge step up in your coding career - covering React, Next.js - next edition February 2025