如何在Postman中获取在线图片的Base64数据
如何在Postman中从在线图片获取正确的Base64数据
问题根源
你当前代码的问题出在用res.text()处理二进制图片数据。图片是二进制格式,text()会将响应按默认字符编码(如UTF-8)解析成字符串,这会破坏原始字节结构,再用btoa()转Base64自然会生成损坏的图片数据。
正确实现步骤
要获取正确的Base64编码,必须直接处理响应的二进制数据,而非转换成文本。Postman的响应对象提供了buffer()方法获取原始二进制缓冲区,再通过适配方式转换为Base64。
修正后的代码
pm.sendRequest(link, (err, res) => { if (err) { reject(err); return; } // 获取原始二进制缓冲区 const buffer = res.buffer(); // 将二进制数据转换为btoa可处理的字符串 const base64Str = btoa(String.fromCharCode(...new Uint8Array(buffer))); // 从响应头自动获取图片类型,适配不同格式 const contentType = res.headers.get('Content-Type') || 'image/png'; // 生成符合要求的data URI格式 const dataUri = `data:${contentType};base64, ${base64Str}`; resolve({ link, raw: buffer, imageData: base64Str, dataUri }); });
关键说明
res.buffer():直接获取响应的原始二进制数据,避免字符编码转换导致的字节损坏。String.fromCharCode(...new Uint8Array(buffer)):将二进制缓冲区转换为btoa()可处理的ASCII字符串,确保每个字节都被正确映射。- 自动读取
Content-Type:不需要硬编码图片类型,从响应头取值可适配PNG、JPG等多种图片格式。
验证方式
- 运行代码后,将生成的
dataUri复制到Postman的Preview标签,或直接在浏览器地址栏打开,应能正常显示图片。 - 也可将
base64Str加上data:image/png;base64,前缀后解码为文件,确认文件可正常打开。
内容的提问来源于stack exchange,提问作者Michiel
相关产品推荐
相关产品推荐

