node.js - 如何在 Node 中通过 HTTP 读取二进制文件?

标签 node.js http

我在网络服务器上有一张图片 (http://example.com/img.jpg)。我在浏览器中打开该图像并将其保存到磁盘。

如果我通过“fs”模块(fs.readFileSync)在 Node 中打开文件,我会得到一个以 0xff 开头的缓冲区,这就是我想要的期待。

我希望能够直接从 HTTP 请求中获得相同的结果。我正在使用“请求”模块来发出请求。

request('http://example.com/img.jpg',function(error, response, body){
  //code here
});

我无法弄清楚如何将响应或正文从我从文件系统获得的内容转换为等效的缓冲区。我错过了什么?

最佳答案

您可以通过设置 encoding 来获得一个 Buffernull:

request('http://example.com/img.jpg', { encoding: null }, function(error, response, body){
  console.log(Buffer.isBuffer(body)); // true
});

request 处理任何其他值 as an argument对于 buffer.toString() ,默认 undefined"utf8"

关于node.js - 如何在 Node 中通过 HTTP 读取二进制文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13943653/

相关文章:

html - Node JS 配置

node.js - Teamcity 运行的 Grunt 无法正确输出到日志

javascript - Node 调度触发问题

http - Location header 能否用于 201 Created 响应中的多个资源位置?

javascript - gulp 任务在没有全局对象的情况下共享一个公共(public)设置

python - 如何在 aiohttp 服务器响应正文中提供客户端请求 header 和服务器响应 header ?

javascript - 保存文件 Python - IOError 权限被拒绝

angular - 为什么在 API 调用上使用 Angular 服务更好?

http - 设置请求 header : Connection

Node.js 需要脚本但不运行它