Javascript 如何从Firebase存储url创建Firebase存储对象
将文件上载到Firebase存储时,您可以通过Storage.object().onFinalize()事件在Firebase云函数中访问表示该文件的对象。此对象提供属性,如Javascript 如何从Firebase存储url创建Firebase存储对象,javascript,node.js,firebase,google-cloud-functions,firebase-storage,Javascript,Node.js,Firebase,Google Cloud Functions,Firebase Storage,将文件上载到Firebase存储时,您可以通过Storage.object().onFinalize()事件在Firebase云函数中访问表示该文件的对象。此对象提供属性,如bucket和name 例如,您可以设置以下内容以在创建文件时访问该文件: exports.generateThumbnails = functions .storage.object() .onFinalize(async fileOjbect => { // Do something here
bucket
和name
例如,您可以设置以下内容以在创建文件时访问该文件:
exports.generateThumbnails = functions
.storage.object()
.onFinalize(async fileOjbect => {
// Do something here with the storage object (here named fileObject).
});
我的问题是如何通过表单的对象存储url获取相同的对象:
gs://my-app.appspot.com/photos/new_photo_here.jpeg
我很难找到从url创建对象的文档。我想将url传递给某种类型的构造函数,该构造函数返回对象,这样我就可以访问bucket
和name
属性(而不必自己进行任何解析)。这样的构造函数存在吗?如果是,在哪里记录?大概是这样的:
const file = storage.object('gs://my-app.appspot.com/photos/new_photo_here.jpeg');
中没有允许从对象存储url创建存储对象的方法
正如您所提到的,您需要自己解析url,这样才能获得bucket
和对象name
,从而组合和方法
请注意,传递给bucket()
方法的bucket name值不应包含gs://
“协议”部分。中没有允许从对象存储url创建存储对象的方法
正如您所提到的,您需要自己解析url,这样才能获得bucket
和对象name
,从而组合和方法
请注意,传递给
bucket()
方法的bucket name值不应包含gs://
“协议”部分。您应使用firebase admin
从URL获取存储对象。
首先,应该从函数中的URL解析bucket名称。
在URL中,Bucket name后跟gs://
。
然后下一个会话将是文件路径,您可以使用firebase admin
的Bucket
对象从该文件路径获取存储对象
const admin = require('firebase-admin');
function getFirebaseStorageObject(url) {
const bucketName = url.match(/gs:\/\/([^\/]*)\//)[1]
const filePath = url.replace(`gs://${bucketName}/`, '')
return admin.storage().bucket(bucketName).file(filePath);
}
getFirebaseStorageObject('gs://my-app.appspot.com/photos/new_photo_here.jpeg');
您应该使用
firebase admin
从URL获取存储对象。
首先,应该从函数中的URL解析bucket名称。
在URL中,Bucket name后跟gs://
。
然后下一个会话将是文件路径,您可以使用firebase admin
的Bucket
对象从该文件路径获取存储对象
const admin = require('firebase-admin');
function getFirebaseStorageObject(url) {
const bucketName = url.match(/gs:\/\/([^\/]*)\//)[1]
const filePath = url.replace(`gs://${bucketName}/`, '')
return admin.storage().bucket(bucketName).file(filePath);
}
getFirebaseStorageObject('gs://my-app.appspot.com/photos/new_photo_here.jpeg');