我正在开发一个公司 CRUD 应用程序,其中一个功能是将订阅的用户个人资料图片存储到 Google Cloud,并在需要显示时下载它。
事实是,当我需要下载它时,请求来自客户端前端,调用和特定的 GET 路由 - 例如,'/getPic'。
然后我的 Node 后端服务器处理这个请求,与 Google Cloud 通信并下载文件,或多或少(简化)如下:
let localFile = fs.createWriteStream('temp/writeStreamFile.jpeg');
return new Promise((resolve,reject) =>{
storage.bucket().file(`users/user123456/profilePicture.jpeg`)
.createReadStream()
.on('end', () => {
console.log("ended");
resolve();
})
.on('response', ans => {
console.log("responded");
})
.on('error', err => {
console.error("Error", err);
reject();
})
.pipe(localFile);
})
之后,我在HTTP请求的响应中返回了这张图片,就可以了。此操作的缺点是下载的文件仍存储在我的网络服务器中的文件夹('temp/writeStreamFile.jpeg')中,占用了我的服务器存储空间。
有没有办法直接在 HTTP 请求的响应中“管道”文件而不在本地保存它?