Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/407.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/34.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何从Firebase存储url创建Firebase存储对象_Javascript_Node.js_Firebase_Google Cloud Functions_Firebase Storage - Fatal编程技术网

Javascript 如何从Firebase存储url创建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

将文件上载到Firebase存储时,您可以通过Storage.object().onFinalize()事件在Firebase云函数中访问表示该文件的对象。此对象提供属性,如
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');