如何从存储url获取firebase存储路径?

问题描述 投票:0回答:3

我正在尝试编写一个迁移脚本,将存储在 firestore 中的存储 url 从开发项目复制到暂存和生产项目。

我正在查询 Firestore 中的所有文档,过滤包含两个字符串之一的文档:

https://firebasestorage.googleapis.com/v0/b/${BUCKET_ID}/o/{FILEPATH}
https://storage.googleapis.com/${BUCKET_ID}/{FILEPATH}

我注意到第一个是在从 javascript 客户端上传图像时使用的,第二个是在从 Cloud Functions 上传图像时使用的。

有没有一种不用解析url就能轻松获取存储路径的方法? 有没有更简单的方法来实现将存储 url 迁移到新项目?

注意:我想从url中获取存储路径。我知道相反的方法很简单。

javascript node.js firebase google-cloud-storage firebase-storage
3个回答
1
投票

我使用 %2F 作为 URL 分隔符。我构建路径的解决方案:

var pictureItem = "https://firebasestorage.googleapis.com/v0/b/<your project>/o/images%2FREOXjfQrYmXFSKFVItoQqnzSCYs1%2F717752.jpg?alt=media&token=1cff5b5c-8d10-40d8-8fd1-98720983c44b"
var url_token = pictureItem.split('?');
var url = url_token[0].split('/');
var filePath = url[url.length - 1].replaceAll("%2F", "/");

0
投票

您想从您存储的网址中获取“{FILEPATH}”部分,这是我建议实现此目的的 JavaScript 代码:

  var data = ['https://firebasestorage.googleapis.com/v0/b/my_bucket_id/o/file_path1','https://storage.googleapis.com/my_bucket_id/file_path2','https://firebasestorage.googleapis.com/v0/b/my_bucket_id/o/file_path3','https://storage.googleapis.com/my_bucket_id/file_path4','https://storage.googleapis.com/my_bucket_id/file_path5','https://storage.googleapis.com/my_bucket_id/file_path6','https://firebasestorage.googleapis.com/v0/b/my_bucket_id/o/file_path7']; //sample data
  
  var treated_data = [];
  
  for (url of data) {
    var list = url.split('/'); // split the url by /
    treated_data.push(list[list.length - 1]); // grabbing and saving the last part.
  }
  
  console.log(treated_data); // here you have all your FILEPATH part

备注:

  • 根据您用于处理数据的实际结构修改代码。

  • 由于 FILEPATH 部分位于您要检索的 url 的末尾,因此无论您正在处理哪个 url,您都只会获得最后一部分。

  • 如果这对您没有帮助,请提供有关您的问题的更多信息(您的迁移过程如何,您使用哪个脚本来处理迁移...)


0
投票

您可以从“firebase/storage”导入并使用

getDownloadURL

用法:

getDownloadURL(storageRef).then( url => {
    ...
});
© www.soinside.com 2019 - 2024. All rights reserved.