【发布时间】:2016-02-04 22:59:05
【问题描述】:
我正在尝试编写一个接受传入管道二进制(或 base-64 编码)流的节点模块,但坦率地说,我什至不知道从哪里开始。我在 Node 文档中看不到任何关于 handling 传入流的示例;我只看到使用它们的示例?
比如说我希望能够做到这一点:
var asset = new ProjectAsset('myFile', __dirname + '/image.jpg')
var stream = fs.createReadStream(__dirname + '/image.jpg', { encoding: 'base64' }).pipe(asset)
stream.on('finish', function() {
done()
})
ProjectAsset 看起来像这样,但我不知道下一步该去哪里:
'use strict'
var stream = require('stream'),
util = require('util')
var ProjectAsset = function() {
var self = this
Object.defineProperty(self, 'binaryData', {
configurable: true,
writable: true
})
stream.Stream.call(self)
self.on('pipe', function(src) {
// does it happen here? how do I set self.binaryData?
})
return self
}
util.inherits(ProjectAsset, stream.Stream)
module.exports = ProjectAsset
module.exports.DEFAULT_FILE_NAME = 'file'
【问题讨论】:
-
这可能有助于提及缓冲区模块可以处理二进制数据,因此如果您在同一模块中读取和翻译二进制文件,您可能需要查看缓冲区模块
-
我实际上是在手动设置时使用 Buffer 来存储数据 - 我需要将管道流转换为缓冲区,以便确定内容类型和准确的长度。
-
因此,如果您知道如何使用流 api,其中一个选项是“数据”上的偶数侦听器,如果您只是将该数据附加到缓冲区,它应该会得到您要查找的内容
-
想添加答案吗?
-
是的,我将其添加到答案中
标签: javascript node.js stream