怎么把一个stream 写到文件中,求助!
发布于 7 年前 作者 cnlile 3252 次浏览 来自 问答

这样,简单的说我就要把一个二维码转化为图像,然后把图像信息保存到一个字符串,然后这个字符串传送出去。二维码代码很简单: var qr = require(‘qr-image’);
var fs = require(‘fs’); var code = qr.image(‘http://blog.nodejitsu.com/’, {type: ‘png’ });
var output = fs.createWriteStream(‘nodejitsu.png’); code.pipe(output); 这样是把二维码保存在文件里面,这个不是我要的,我要保存在一个字符串里面,我想上面生成的code 应该是一个流,那么代码我写了个用 var Writable = require(‘stream’).Writable; var ws = Writable(); 的方式,似乎结果很糟糕。。。我不知道问题所在了。。。怎么样把流放到一个字符串里面,base64格式保存呢。。。

4 回复

code 是流的话,就读取这个流啊。 我就知道这个 code.on(‘data’,function(data){ //… })

谢谢各位,群里的朋友看到了,已经帮我解答了,方式: var base64 = ‘’; code.on(‘data’, data => base64 += data.toString(‘base64’)).on(‘end’, () => console.log(base64));

你确定你这样写没问题? (new Buffer(‘a’)).toString(‘base64’)+ (new Buffer(‘a’)).toString(‘base64’) != (new Buffer(‘aa’)).toString(‘base64’)

@mabu233 没问题,我最后总结的代码: var qr = require(‘qr-image’); var code = qr.image(‘http://blog.nodejitsu.com/’, {type: ‘png’ }); var base64 = ‘’; code.on(‘data’, data => base64 += data.toString(‘base64’)).on(‘end’, () => console.log(base64));

回到顶部