📜  nodejs 从 url 下载图像 - Javascript (1)

📅  最后修改于: 2023-12-03 15:17:57.929000             🧑  作者: Mango

Node.js 从 URL 下载图像

在 Node.js 程序中,有时我们需要从一个 URL 地址下载一张图片,并将其保存到本地磁盘上。本篇文章介绍使用 Node.js 实现从 URL 下载图像的方法。

使用 https 模块下载

首先,我们可以使用 Node.js 内置的 https 模块来实现从 URL 下载图片。具体代码如下:

const https = require('https');
const fs = require('fs');

const file = fs.createWriteStream("image.jpg");

https.get("https://example.com/image.jpg", (res) => {
  res.pipe(file);
});

上述代码中,我们首先引入了 Node.js 内置的 https 模块和 fs 模块。然后,我们使用 fs.createWriteStream() 方法创建一个可写流,将下载的图片写入到 image.jpg 文件中。

接下来,我们使用 https.get() 方法向服务器发起 GET 请求,并将响应数据通过管道(res.pipe())写入到文件中。

注意: 在使用第三方 HTTP 模块时,请注意在代码中处理错误和异常情况。

使用 axios 模块下载

除了使用 Node.js 内置的 https 模块外,我们还可以使用第三方 HTTP 模块 axios。具体代码如下:

const axios = require('axios');
const fs = require('fs');

const downloadImage = () => {
  const url = 'https://example.com/image.jpg';
  const writer = fs.createWriteStream('image.jpg');

  axios({
    url,
    responseType: 'stream',
  }).then(response => {
    response.data.pipe(writer);
  }).catch(error => {
    console.log(error);
  });
};

downloadImage();

上述代码中,我们首先安装 axios 模块,并引入该模块和 fs 模块。然后,我们定义了一个名为 downloadImage 的函数,该函数使用 axios() 方法发起 GET 请求,并将响应的 responseType 设置为 stream 类型。接着,我们通过管道将响应数据写入到一个可写流中,最后保存到本地磁盘上。

总结

本篇文章介绍了使用 Node.js 实现从 URL 下载图像的两种方法:使用内置 https 模块和第三方 HTTP 模块 axios。在实际开发中,我们可以根据具体需求选择适合的方法。