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

如何在Node.js中使用HTTPS模块获取Array Buffer格式的响应体?

使用Node.js原生https模块获取图片并转为ArrayBuffer

你当前的问题在于将二进制响应数据转成了字符串拼接,这会破坏图片的二进制信息,导致后续无法正确还原成ArrayBuffer。正确的做法是直接收集Buffer块,再合并后转换为ArrayBuffer。

修正后的代码

const https = require('https');

const request = https.request('https://placehold.co/600x400', (response) => {
    const chunks = [];

    response.on('data', (chunk) => {
        chunks.push(chunk); // 直接收集Buffer块,不转字符串
    });
  
    response.on('end', () => {
        // 合并所有Buffer块成一个大Buffer
        const buffer = Buffer.concat(chunks);
        // 将Buffer转换为ArrayBuffer(避免包含Buffer额外分配的内存)
        const arrayBuffer = buffer.buffer.slice(buffer.byteOffset, buffer.byteOffset + buffer.length);
        console.log(arrayBuffer);
    });
});
  
request.end();

为什么之前的方法无效?

  • 图片是二进制数据,你将chunk转成UTF-8字符串时,很多字节无法被UTF-8正确解析,会被替换成占位符(比如�),导致原始数据永久丢失。
  • Buffer.from(data, 'utf-8')和TextEncoder.encode(data)都是基于损坏后的字符串操作,自然无法还原出正确的二进制数据。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 20:12:42