# How to download and save an image using Node.js

> Learn how to download and save an image in Node.js with Axios by requesting it as a stream and piping the response into a file write stream you can await.

Author: [Flavio Copes](https://flaviocopes.com/about/) | Published: 2023-01-10 | Topics: [Node.js](https://flaviocopes.com/tags/node/) | Canonical: https://flaviocopes.com/how-to-download-and-save-an-image-using-nodejs/

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](https://flaviocopes.com/axios/).

```javascript
import axios from 'axios'
```

Then write a `download()` function like this:

```javascript
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

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

await download(remote_url, local_path)
```
