3

我有以下Firebase云端功能来获取存储在Google云端存储中的文件的URL。从Google云端存储中获取较短的文件URL(使用Firebase云端功能)

const gcs = require('@google-cloud/storage')({keyFilename: 'service-account.json'}); 

exports.generateFileLink = functions.storage.object().onChange(event => { 
    const object = event.data; 
    const filePath = object.name; 
    const bucket = gcs.bucket(object.bucket); 
    const file = bucket.file(filePath); 
    const action = 'read'; 
    const expires = '03-09-2491'; 
    return file.getSignedUrl({action, expires}).then(signedUrls => { 
    console.log(signedUrls[0]) 
    }); 
}) 

这将返回正确的URL,但它的长度超过600个字符。 Firebase Web控制台中显示的同一文件的URL长度小于200个字符。有什么方法可以使用firebase-admin或firebase-functions模块来获取较短的URL?

回答

3

简单的回答是,我们正在开发一个firebase-admin存储客户端,但它还有一点距离。目前,如果您需要在一个函数中创建一个下载URL,那么签名的URL就是要走的路。

为什么需要在功能中使用Firebase提供的下载网址生成签名的网址?您是否无法通过函数中的客户端来检索URL,并且您需要将它移动到其他位置?

+0

我无法找到任何方法使用任何Firebase模块检索文件的下载URL。我并不需要签名的网址,只需[下载网址](https://firebase.google.com/docs/reference/ios/firebasestorage/api/reference/Classes/FIRStorageReference#/c:objc(cs) FIRStorageReference(im)downloadURLWithCompletion :)里面有一个云端函数。 –

+0

对不起,让我纠正自己。我确实需要一个签名的URL。 Firebase下载网址中有一个令牌属性(约36个字符),而Google云端存储拥有一个签名(超过200个字符)。我在寻找较小尺寸的下载网址 –

+0

@SalilThakur,很遗憾,我们尚未通过标准GCS客户端支持Firebase下载网址。如前所述,我们正在努力解决这个问题,但现在您必须使用长格式或存储'gs://'URI并让客户端获得实际的下载URL。另一种选择是调查链接缩短器(如bit.ly)以扩展到完整签名的URL –

相关问题