我正在尝试从Google云存储桶中获取文件。文件名类似于20180618_1400/SOMEID_20180618.jpg
,20180618_1200/SOMEID_20180618.jpg
,20180617_1400/SOMEOTHERID_20180617.jpg
等。
我想获取基于SOMEID
的文件。
我尝试将以下代码与reg exp
bucket.getFiles({
prefix: new RegExp(`[0-9_]*\/SOMEID_`),
}, (err, files) => {
if (err) return reject(err);
resolve(files);
});
预期结果是文件20180618_1400/SOMEID_20180618.jpg
和20180618_1200/SOMEID_20180618.jpg
。但是代码返回了存储桶中的所有文件。
我在互联网上搜索,但找不到任何东西。
还有其他方法可以实现吗?
答案 0 :(得分:3)
前缀必须是字符串。这是一个前缀,而不是正则表达式。我已经确定要确保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会获取所有文件,然后将正则表达式应用到客户端,所以这不是一个更好的解决方案。