Firebase函数获取下载URL(不应过期且不公开)

时间:2019-06-07 12:24:40

标签: javascript firebase google-cloud-functions firebase-storage admin-sdk

我一直在尝试从过去2天中获取下载URL。我进行了很多搜索以获取正确的答案,但是我得到了所有较旧且不清楚的答案。我找不到任何新的/完美的答案,这就是为什么我在这里发布此问题。

我正在通过firebase功能通过admin-SDK将base64映像上传到firebase存储。下面是我用来将base64上传到Firebase存储的代码。

base64 = "mybase64imagestring";

let bufferStream = new stream.PassThrough();
bufferStream.end(new Buffer.from(base64, 'base64'));

// Retrieve default storage bucket
let bucket = admin.storage().bucket();

// Create a reference to the new image file
let file = bucket.file(`/jk_${dish.createdAt}.jpg`);

bufferStream.pipe(file.createWriteStream({
    metadata: {
      contentType: 'image/jpeg'
    }
  }))
  .on('error', error => {
    reject(`Error while uploading picture ${JSON.stringify(error)}`);
  })
  .on('finish', () => {
    // The file upload is complete and i want to get download URL(which is not public and should not expire) here.

  });

我尝试使用方法“ getSignedUrl”来获取here所述的下载URL,但是我在评论中以及在其他一些由getSignedUrl()检索到的链接上也发现了一个星期。我想要一个永久链接,该链接至少一个月不会过期。我发现某个地方可以使用不会过期的公共链接,但找不到任何方法来检索它。另外,我不想破坏安全性,所以我不想存储公共链接。

获得该链接后,我将其存储在数据库中,并从数据库中通过该链接访问图像。这就是为什么我希望链接不会过期。

有没有人可以帮助我解决这个问题?

0 个答案:

没有答案