【问题标题】:How to get the firebase storage path from the the storage url?如何从存储 url 获取 firebase 存储路径?
【发布时间】:2019-11-07 18:58:06
【问题描述】:

我正在尝试编写一个迁移脚本,将存储在 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 中获取存储路径。我知道反过来很简单。

【问题讨论】:

  • 明确地说,您想从正在检索的存储 url 中获取“{FILEPATH}”部分,还是只是在寻找一种更简单的方法来检索存储 url?
  • @Mayeru 我将 url 存储在 Firestore 中,我想从中取出 {FILEPATH}。

标签: javascript node.js firebase google-cloud-storage firebase-storage


【解决方案1】:

您想从您存储的网址中获取“{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 并不重要,您只会得到最后一部分。

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

【讨论】:

    【解决方案2】:

    我有 %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", "/");
    

    【讨论】:

      猜你喜欢
      • 2020-12-09
      • 2020-06-28
      相关资源
      最近更新 更多