【问题标题】:nodejs server, write out png to response pagenodejs服务器,将png写入响应页面
【发布时间】:2014-05-31 21:17:12
【问题描述】:

我正在使用node-png库制作png,然后将其保存在本地目录中,但是当我将其打开备份时,它说它不存在。我想读入数据并将其发送出去,或者只是让响应发送带有图片的<img> 字段。到目前为止,这是我所拥有的:

//write out img data
png.pack().pipe(dst);

//link to new image made
var link = fs.createReadStream('out.png'); //says that this does not exist

//write out response with img then delete file
response.writeHead(200, {"Content-Type": "image/png"});
response.end(link, 'binary');

【问题讨论】:

  • dst 在完成写入磁盘时是否有可选的回调?
  • 不,只有一个可以设置的选项link
  • 您可以随时等待流结束,然后再执行任何操作。 event-stream 模块有 through 方法可以做到这一点。
  • @CRS 您是否考虑过使用 end 选项:reader.pipe(writer, { end: false }); 后跟 reader.on('end', function() {writer.end('Goodbye\n');});,看起来它的行为类似于回调?

标签: javascript node.js png


【解决方案1】:

您不能完全跳过写入文件吗?

var output = png.pack();
res.setHeader('Content-Type', 'image/png');
output.pipe(res);

如果您确实需要同时将其写入磁盘,请参考此答案:

https://stackoverflow.com/a/19561718/944006

如果您需要先写入磁盘然后再从中读取,您会这样做:

var output = png.pack();
output.pipe(dst, { end: false });
output.on('end', function(){
     //Read your file and set your response here.
}

我没有对此进行任何测试,但这就是管道的一般工作方式。

【讨论】:

  • 如果我将图像作为bufferStream.pipe(res); 之类的流返回,如何在前端渲染图像?
猜你喜欢
  • 2017-12-08
  • 1970-01-01
  • 1970-01-01
  • 2012-09-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-05-03
相关资源
最近更新 更多