node.js - 如何根据正则表达式从Google Cloud Storage存储桶中获取文件?

标签 node.js google-cloud-platform google-cloud-storage

我正在尝试从 Google 云存储桶获取文件。文件名类似于 20180618_1400/SOMEID_20180618.jpg20180618_1200/SOMEID_20180618.jpg20180617_1400/SOMEOTHERID_20180617.jpg 等。

我想获取基于SOMEID的文件。 我尝试将以下代码与 reg exp 一起使用

bucket.getFiles({ 前缀: new RegExp(`[0-9_]*\/SOMEID_`), }, (错误, 文件) => { 如果(错误)返回拒绝(错误); 解决(文件); });

预期结果是文件 20180618_1400/SOMEID_20180618.jpg20180618_1200/SOMEID_20180618.jpg。但代码返回存储桶中的所有文件。

我在互联网上进行了搜索,但没有找到任何内容。

还有其他方法可以达到这个目的吗?

最佳答案

前缀必须是字符串。这是一个前缀,而不是正则表达式。我看了一下才确定in documentation正如预期的那样,这是不可能的。

在 GCS 中执行此操作的正确方法是以字符串可用的前缀方式构建存储桶。例如,有一个用于存放个人资料图片的目录,另一个用于存放 pdf 的目录,...并且所有文件都以您的用户 ID 命名。

示例:

profiles/1245.jpg
profiles/7561.jpg
billing/1245-2018-10.pdf
billing/1245-2018-09.pdf
billing/7561-2018-10.pdf
...

如果不能,您将必须获取所有项目,然后对其应用正则表达式。 getFiles() 文档末尾有一个示例

我认为(已经有一段时间了),您可以使用 gsutils 来使用正则表达式,但是 gsutils 获取所有文件,然后在客户端应用正则表达式,因此这不会是更好的解决方案。

关于node.js - 如何根据正则表达式从Google Cloud Storage存储桶中获取文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52904187/

相关文章:

javascript - Sequelize 模型关联更新未按预期反射(reflect)

node.js - 我的注册路线有误

kubernetes - 从 Google 托管的 Kubernetes 集群中的容器检测 Google Cloud 项目 ID

javascript - 解析从 Netsuite 到 Heroku 的 JSON HTTP 请求返回错误 "SyntaxError: Unexpected token p"

php - 使用memcached存储session数据,安全吗?

google-cloud-platform - 基于 Google Data Studio 上的用户过滤器选择的动态文本

kubernetes - 如何在 Kubernetes 负载均衡器中响应 503 错误代码

javascript - 通过javascript上传文件到谷歌云存储

python - 通过公共(public) HTTP 自动将大文件检索到 Google Cloud Storage

php - 在谷歌云存储对象上设置缓存控制 php 客户端