nodejs批量下载图片

栏目: 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