暂时从云存储下载文件到云功能

问题描述 投票:0回答:1

让它工作起来真是太辛苦了。我编写了一个云函数来创建 PDF。 PDF 可以包含从云存储下载的图像。所有这些都不可公开访问,并且所有权限都很好。

我能够看到我尝试下载的文件的元数据,但临时下载到文件系统的实际行为是我陷入困境的地方。我得到的是一个空数组:[]。

  const functions = require('@google-cloud/functions-framework');
  const {Storage} = require('@google-cloud/storage');

  functions.http('<my func>', async (req, res) => {
       const bucketName = '<my bucket>';
       const fileName = 'mytest.jpg';
       const cwd = path.join(__dirname, '..');
       const destFileName = path.join(cwd, 'tmp/mytest.jpg');

       const options = {
            destination: destFileName
       }

       const [meta] = await storage.bucket(bucketName).file(fileName).getMetadata();
       console.log(meta) <-- this is populated with the files metadata
       
       const file = await 
           storage.bucket(bucketName).file(fileName).download(options);
       console.log(file) <-- this is always []
      
       ....
 }

我已经尝试了一些在其他帖子中使用 createReadStream()/createWriteStream() 看到的东西,但也没有骰子,即因为文件是一个空数组。

上述代码取自此处的文档:HereHere

提前感谢您的一些指导

javascript node.js google-cloud-platform google-cloud-functions google-cloud-storage
1个回答
0
投票

首先,此代码对于 Cloud Functions 来说不正确:

       const cwd = path.join(__dirname, '..');
       const destFileName = path.join(cwd, 'tmp/mytest.jpg');

Cloud Functions 中唯一可写的目录是 temp 目录,可在

os.tmpdir()
中找到。它可能是“/tmp”。请参阅:在 Cloud Functions / temp 目录中创建文件

其次,您从 download() 获得的结果是预期的。返回的 DownloadResponse 是一个数组,其中包含一个包含下载内容的可选项目。由于您告诉 SDK 下载到目标文件,我希望该数组为空 - 这样并不是错误。

© www.soinside.com 2019 - 2024. All rights reserved.