如何在node.js中重用WriteStream的内容
How can I re-use WriteStream's content in node.js
我的应用程序需要大量不同大小的白色占位符 PNG,我无法手动创建。
因此,我为我构建了一个服务,使用 pngjs
即时构建这些图像。这工作正常。现在我认为在磁盘上缓存结果可能是一个好主意,但我不知道如何重用我已经通过管道传输到服务器响应中的图像内容(因为我缺乏对管道的正确理解可能)。
我的代码如下所示:
app.get('/placeholder/:width/:height', function(req, res){
var fileLocation = __dirname + '/static/img/placeholder/' + req.params.width + 'x' + req.params.height + '.png';
fs.readFile(fileLocation, function(err, file){
if (file){
res.sendfile(fileLocation);
} else {
var png = new PNG({
width: parseInt(req.params.width, 10),
height: parseInt(req.params.height, 10),
filterType: -1
});
// image creation going on..
//now all I get working is either doing:
png.pack().pipe(res);
//or
png.pack().pipe(fs.createWriteStream(fileLocation));
}
});
});
但是我想做的是使用png.pack()
的输出作为req的响应发送并同时写入磁盘。我尝试了类似以下内容:
var output = png.pack();
output.pipe(fs.createWriteStream(fileLocation));
res.setHeader('Content-Type', 'image/png');
res.send(output, 'binary');
但它似乎不能正常工作。
你可以通过管道连接到多个流!
var output = png.pack()
output.pipe(fs.createWriteStream(fileLocation))
res.setHeader('Content-Type', 'image/png')
output.pipe(res)
相关文章:
- Node.js v6.2.0类扩展不是函数错误
- 如何使用 node.js 比较两个 json 数组
- Node.js's Buffer.writeFloatBE in Javascript
- node.js:setInterval()正在跳过调用
- 如何处理node.js节点mongodb中的连接和查询队列
- Node.js正在更改应用程序以使用集群模块
- 如何使用Node.js最有效地解析网页
- 在openshift node js应用程序中获取请求
- 正在删除node.js中已验证的网站
- 与运行长作业(javascript,node.js)的第三方API同步的最佳实践
- 在索引.html和应用.js [node.js] 之间共享变量
- Node.js中的JavaScript原型对象效率
- 如何在构建node-webkit应用程序后获取外部资源
- node.js请求数据事件未在CORS ajax调用中触发
- 使用node.js制作网站
- 使用Angular和Node上传文件
- 使用node.js服务器中的evernote api获取note内容
- 有没有任何方法可以使用node-js从不同的机器打开浏览器
- node-webkit-从父窗口捕获iframe鼠标事件
- 如何在node.js中重用WriteStream的内容