nodejs批量下载图片
在 node.js 中实现图片批量下载,你可以使用各种库来处理 HTTP 请求、文件操作和并发控制。以下是一个简单的示例,演示如何批量下载图片并保存到本地文件系统。
首先,你需要安装 axios
和 fs-extra
库。axios
用于发送 HTTP 请求,fs-extra
是 fs
模块的一个扩展,提供了更多方便的文件操作方法。
你可以使用 npm 或 yarn 来安装这些库:
npm install axios fs-extra
或
yarn add axios fs-extra
以下是一个示例代码,演示如何批量下载图片:
const axios = require('axios');
const fs = require('fs-extra');
const path = require('path');
const imageUrls = [
'https://example.com/image1.jpg',
'https://example.com/image2.jpg',
// 添加更多的图片 URL
];
const downloadDir = path.join(__dirname, 'downloaded_images');
// 确保下载目录存在
fs.ensureDirSync(downloadDir);
async function downloadImage(url, filename) {
try {
const response = await axios({
url,
responseType: 'stream',
});
response.data.pipe(fs.createWriteStream(path.join(downloadDir, filename)));
return new Promise((resolve, reject) => {
response.data.on('end', () => resolve());
response.data.on('error', (err) => reject(err));
});
} catch (error) {
console.error(`Failed to download ${url}:`, error);
throw error;
}
}
async function downloadImages(urls) {
const promises = urls.map((url, index) => {
const filename = `image_${index + 1}.jpg`; // 你可以根据需要调整文件名
return downloadImage(url, filename);
});
try {
await Promise.all(promises);
console.log('All images downloaded successfully.');
} catch (error) {
console.error('Error downloading images:', error);
}
}
downloadImages(imageUrls);
代码解释:
1、引入依赖
引入 axios
、fs-extra
和 path
模块。
2、定义图片 URL 数组:
将你要下载的图片 URL 放在一个数组中。
3、定义下载目录:
指定一个目录来保存下载的图片。
4、确保目录存在:
使用 fs.ensureDirSync
方法确保下载目录存在。
5、定义 downloadImage
函数:
该函数接收图片 URL 和文件名,然后使用 axios
发送 HTTP 请求下载图片,并将图片保存到指定文件路径。
6、定义 downloadImages
函数:
该函数接收一个包含 URL 的数组,为每个 URL 调用 downloadImage
函数,并使用 Promise.all
并发处理所有下载任务。
7、启动下载:
调用 downloadImages
函数并传入图片 URL 数组。
这个示例代码是一个简单的批量下载图片的实现。你可以根据实际需求对其进行扩展,比如添加错误重试机制、支持更多文件格式、调整下载并发数量等。
本文地址:https://www.tides.cn/p_node-batch-download-images