You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Node.js结合fs从URL本地保存游戏王卡牌图片?

使用Node.js将游戏王卡牌图片保存到本地文件夹

要实现从URL下载图片并保存到项目的img文件夹,你需要结合Node.js的https(处理HTTPS请求)、fs(文件系统操作)和path(路径处理)模块,具体实现如下:

核心实现步骤

  1. 确保目标文件夹存在:提前创建img文件夹(如果不存在),避免写入文件时出错。
  2. 发起请求获取图片数据流:通过目标URL请求图片资源,获取响应数据流。
  3. 数据流写入本地文件:将响应流直接管道到本地文件写入流,高效完成保存操作。

完整代码示例

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

// 定义保存图片的工具函数
function saveCardImage(imageUrl, targetDir) {
    // 递归创建目标文件夹(不存在则自动生成)
    fs.mkdirSync(targetDir, { recursive: true });

    // 从URL中提取文件名(如98127546.jpg)
    const fileName = path.basename(imageUrl);
    // 拼接最终保存路径
    const savePath = path.join(targetDir, fileName);

    // 发起HTTPS请求获取图片资源
    const request = https.get(imageUrl, (response) => {
        // 检查响应状态码,确保请求成功
        if (response.statusCode !== 200) {
            console.error(`下载失败:响应状态码 ${response.statusCode}`);
            request.abort();
            return;
        }

        // 创建文件写入流,将响应流管道到本地文件
        const writeStream = fs.createWriteStream(savePath);
        response.pipe(writeStream);

        // 监听写入完成事件
        writeStream.on('finish', () => {
            console.log(`图片已成功保存至:${savePath}`);
        });

        // 处理文件写入错误
        writeStream.on('error', (err) => {
            console.error(`写入文件出错:${err.message}`);
            fs.unlinkSync(savePath); // 删除已写入的残缺文件
        });
    });

    // 处理请求阶段的错误
    request.on('error', (err) => {
        console.error(`请求图片资源失败:${err.message}`);
    });
}

// 调用示例:保存指定游戏王卡牌图片到img文件夹
const cardImageUrl = 'https://images.ygoprodeck.com/images/cards/98127546.jpg';
saveCardImage(cardImageUrl, './img');

关键细节补充

  • 跨协议兼容:如果你的图片链接同时存在HTTP和HTTPS协议,可以通过url模块解析协议类型,动态选择对应的请求模块:
    const url = require('url');
    const { protocol } = url.parse(imageUrl);
    const client = protocol === 'https:' ? https : require('http');
    
  • 批量下载注意:如果需要批量下载大量卡牌图片,建议添加并发控制(比如限制同时下载的任务数量),避免触发目标服务器的反爬限制。
  • 异常处理:代码中覆盖了请求错误、响应异常、文件写入错误等场景,避免程序崩溃或生成无效文件。

内容的提问来源于stack exchange,提问作者Gleyveon

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 22:50:42