繁体   English   中英

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

[英]How to get the firebase storage path from the the storage url?

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

您想从存储的网址中获取“ {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都没有关系,您只会得到最后一部分。

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM