如何使用createWriteStream从Google Cloud Function获得永久的Firebase Storage下载URL?

时间:2019-04-24 19:21:02

标签: google-cloud-functions firebase-storage

我知道如何将文件从Google Cloud Function上载到Firebase Storage,然后使用getSignedURL()立即获得下载URL,但是此下载URL会在7天后过期。

Get Download URL from file uploaded with Cloud Functions for Firebase显示了如何从bucket.upload()返回的元数据中获得永久的未签名下载URL。这对我不起作用,因为我正在使用file.createWriteStream()file.createWriteStream不返回bucket.upload()返回的元数据。

是否有一种方法可以使用createWriteStream制作一个文件,然后bucket.upload()可以上传到Cloud Storage? file.save()看起来很有可能,因为它包装了createWriteStream,但是我看不到为data参数指定什么。还是从createWriteStream获取永久未签名的下载URL的另一种方法?

这是我的代码,使用getSignedUrl();

    options.metadata.contentType = 'audio/webm';
      synthesizeParams.accept = 'audio/webm';
      file = bucket.file('Audio/' + longLanguage + '/' + pronunciation + '/' + word + '.' + 'webm');
      textToSpeech.synthesize(synthesizeParams)
      .then(function(audio) {
        audio.pipe(file.createWriteStream(options));
      })
      .then(function() {
        resolve(file.getSignedUrl({
          action: 'read',
          expires: '03-17-2025',
          content_type: 'audio/webm'
        }));
      })
      .catch(error => console.error(error));

0 个答案:

没有答案