【问题标题】:How to use streams to create binary data in nodejs?如何使用流在 nodejs 中创建二进制数据?
【发布时间】:2017-06-15 02:39:19
【问题描述】:

我需要从驱动器中读取文件并将其传递给另一个 API。目标 API 接受二进制数据(如使用 fs.readFile() 读取的数据)

下面是驱动api代码

var fileId = '0BwwA4oUTeiV1UVNwOHItT0xfa2M';
var dest = fs.createWriteStream('/tmp/photo.jpg');
drive.files.get({
   fileId: fileId,
   alt: 'media'
})
.on('end', function() {
  console.log('Done');
})
.on('error', function(err) {
  console.log('Error during download', err);
})
.pipe(dest);

我知道的一种方法是按照上面的示例将文件写入文件系统,然后使用fs.readFile() 从那里读回。但是,我知道这是一种不好的做法,只是想将文件保存在内存中。

实现这一目标的最佳方法是什么?

更新

答案在标记答案的 cmets 中。

【问题讨论】:

    标签: node.js binary binarystream


    【解决方案1】:

    流按原样支持二进制数据。你不需要做任何特别的事情。就像您在这里所做的那样,只需将一个流传输到另一个流。无需像在此示例中那样通过管道传输到文件流,而是通过管道传输到该 API 的流。

    【讨论】:

    • 我猜 API 接受二进制数据但不接受流。正如我提到的,fs.readFile() 的响应。如果我错了,请纠正我。
    • @Pavan 如果它不接受流,那么就使用sourceStream.on('data', (chunk) => { api.write(chunk); }),或者任何适合这个API 的东西。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-14
    • 2016-06-25
    • 1970-01-01
    • 2014-11-05
    • 1970-01-01
    • 2022-01-13
    相关资源
    最近更新 更多