📅  最后修改于: 2023-12-03 15:17:57.929000             🧑  作者: Mango
在 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
。在实际开发中,我们可以根据具体需求选择适合的方法。