我知道如何将文件从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));