【发布时间】:2014-06-14 12:35:05
【问题描述】:
我正在向我的服务器发送一个 base64 字符串。在服务器上,我想创建一个可读流,我将 base64 块推送到该流上,然后转到可写流并写入文件。我的问题是只有第一个块被写入文件。我的猜测是因为我为每个块创建了一个新缓冲区,这就是导致问题的原因,但是如果我只发送字符串块而不创建缓冲区,则图像文件已损坏。
var readable = new stream.Readable();
readable._read = function() {}
req.on('data', function(data) {
var dataText = data.toString();
var dataMatch = dataText.match(/^data:([A-Za-z-+\/]+);base64,(.+)$/);
var bufferData = null;
if (dataMatch) {
bufferData = new Buffer(dataMatch[2], 'base64')
}
else {
bufferData = new Buffer(dataText, 'base64')
}
readable.push(bufferData)
})
req.on('end', function() {
readable.push(null);
})
【问题讨论】: