我有一些基本代码从缓存中流式传输文件,或者如果不存在则将其下载到缓存中:
if (fs.existsSync('cache/' + req.params.image)) {
fs.createReadStream('cache/' + req.params.image).pipe(res);
}else{
request(url).pipe(fs.createWriteStream('cache/' + req.params.image));
}
问题是,为了显示新文件,必须加载两次页面。一次写入缓存并一次从缓存中读取。我想要做的是同时向request
和createWriteStream
管道res
,异步(所以不要等待管道关闭事件写入响应)。
答案 0 :(得分:0)
使用此:
if (fs.existsSync('./' + req.params.image)) {
fs.createReadStream('./' + req.params.image).pipe(res);
}else{
var fetch = request(url);
fetch.pipe(fs.createWriteStream('./' + req.params.image));
req.pipe(fetch).pipe(res);
}
希望这可以解决问题......