首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用亚马逊S3 listObjects过滤.mp3文件

问如何使用亚马逊S3 listObjects过滤.mp3文件
EN

Stack Overflow用户
提问于 2015-06-20 04:39:47
回答 2查看 1.7K关注 0票数 0

我正在使用亚马逊S3服务和node.js,我想使用亚马逊S3 listObjects()过滤目录中的所有.mp3文件。有prefix参数,但没有sufix。有没有办法使用正则表达式或像*.mp3之类的过滤器来实现这一点?

这是函数参考http://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/S3.html#listObjects-property

代码语言:javascript
复制
var prefix = "myS3dir/";
bucket.listObjects({Prefix:prefix}, function(err, data){
    //do something with data
});
EN

回答 2

Stack Overflow用户

发布于 2015-06-20 05:52:20

不,这在S3中是不可能的。服务器端只能按前缀过滤。这与S3没有真正的键层次结构有关,它主要是一个键对象存储,前缀匹配在那里工作。

如果你想做后缀匹配,你基本上必须取出所有键的名称,并在客户端检查它们。

票数 3
EN

Stack Overflow用户

发布于 2015-06-20 08:15:39

如果您需要按.mp3文件扩展名进行查询,并且S3对象的数量很少,那么只需枚举所有S3对象并提供您自己的内存过滤器/查询即可。如果S3对象的数量很大(比如10k+,枚举起来会很慢),那么您需要一个不同的解决方案。假设您不直接向最终用户公开S3结构,那么这里有一些想法:

  1. 在文件名前面插入一个前缀,例如mybucket/mp3/beatit.mp3 -然后你就可以使用前缀: mybucket/mp3/。注意:如果您还想查询“example.
  2. Reverse *”,例如3pm.titaeb的文件名,并搜索前缀mybucket/3 3pm,这是不好的。我知道这听起来很奇怪,这会阻止查询"beat*“,但在某些情况下,这是一个很好的解决方案。
  3. 使用一个辅助数据库,例如MySQL,它根据文件扩展名和任何其他您需要的内容编制索引,并且包含对S3位置的引用。
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30946924

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档