我發送一個base64字符串到我的服務器。在服務器上,我想創建一個可讀的流,我將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);
})
謝謝@vkurchatkin!我不確定我是否遵循你所說的全部內容。我想推入每個塊,因爲它到達流。我有一個工作解決方案('數據'和concatement每個塊,然後創建一個緩衝區並推入到流,但正如我所說我想流每個塊。我試着base64流簡要之前,我發佈這個問題,但沒有你可以給出一個簡單的代碼示例 – codedmart
@codedmart肯定 – vkurchatkin
好的再次感謝@vkurchatkin。 – codedmart