gpt4 book ai didi

javascript - 如何在node.js中重用WriteStream的内容

转载 作者:行者123 更新时间:2023-12-02 18:08:22 26 4
gpt4 key购买 nike

我的应用需要大量不同尺寸的白色占位符 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)

关于javascript - 如何在node.js中重用WriteStream的内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19901775/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com