Node.js Nodejs流写入、读取、写入

Node.js Nodejs流写入、读取、写入,node.js,express,request,Node.js,Express,Request,基本上,我要做的是从外部源写入文件,从该文件读取,然后以某种更新的样式重新写入。我这样做是为了一个图像。Ex代码: var rawImg = urlHtml('img').attr('src'); // got the image from a website! var wStream = request(rawImg).pipe(fs.createWriteStream(__dirname + '/public/img/test.jpg')); //write img to file v

基本上,我要做的是从外部源写入文件,从该文件读取,然后以某种更新的样式重新写入。我这样做是为了一个图像。Ex代码:

var rawImg = urlHtml('img').attr('src'); // got the image from a website! 

var wStream = request(rawImg).pipe(fs.createWriteStream(__dirname + '/public/img/test.jpg')); //write img to file

var rStream = fs.createReadStream(__dirname + '/public/img/test.jpg', {encoding: 'base64'}); // read img from file
var wStream2 = fs.createWriteStream(__dirname + '/public/img/test-result.jpg') // output

图像确实保存到文件中,但每当我尝试读取它时,总是会出现错误:{[error:spawn enoint]code:'enoint',errno:'enoint',syscall:'spawn'}-这意味着它甚至还不在那里

您试图在创建文件之前读取它。请尝试等待先关闭文件:

var wStream = request(rawImg).pipe(fs.createWriteStream(__dirname + '/public/img/test.jpg'));

wStream.on('close', function() {
  var rStream = fs.createReadStream(__dirname + '/public/img/test.jpg', {encoding: 'base64'});
  var wStream2 = fs.createWriteStream(__dirname + '/public/img/test-result.jpg');
});

由于某种原因,当我试图访问文件时,它不起作用,我不知道为什么我更新了我的答案,
close
事件可能会更好,因为此时备份文件描述符已关闭。它仍然不起作用!我想我必须使用一个库,也许到时候它会工作,或者我应该使用一个转换流吗?我刚刚尝试了.on('end)函数,但我从控制台没有得到任何结果!提示:如果在终端中执行
grep$somesomefile>somefile
,会发生什么?