簡體   English   中英

如何使用Amazon S3 listObjects過濾.mp3文件

[英]How to filter .mp3 files using Amazon S3 listObjects

我將Amazon S3服務與node.js結合使用,並且我想使用Amazon S3 listObjects()過濾目錄中的所有.mp3文件。 有一個prefix參數,但沒有sufix 有什么方法可以使用正則表達式或* .mp3之類的過濾器來實現?

這是功能參考http://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/S3.html#listObjects-property

var prefix = "myS3dir/";
bucket.listObjects({Prefix:prefix}, function(err, data){
    //do something with data
});

不,這對於S3是不可能的。 您只能按前綴在服務器端進行過濾。 這與以下事實有關:S3沒有真正的密鑰層次結構,它主要是密鑰對象存儲,並且前綴匹配在那里起作用。

如果要進行后綴匹配,則基本上必須拉出所有鍵的名稱並在客戶端進行檢查。

如果您需要通過.mp3文件擴展名查詢並且S3對象的數量很少,則只需枚舉所有S3對象並提供您自己的內存過濾器/查詢即可。 如果S3對象的數量很大(例如10k +,這將很難枚舉),那么您需要一個不同的解決方案。 假設您沒有直接向最終用戶公開S3結構,那么這里有一些想法:

  1. 在文件名之前插入前綴,例如mybucket / mp3 / beatit.mp3-然后可以使用前綴:mybucket / mp3 /。 注意:例如,如果您還想查詢“ beat *”,則這不好。
  2. 反轉文件名,例如3 pm.titaeb,然后搜索前綴mybucket / 3pm。 我知道這聽起來很奇怪,它會阻止查詢“ beat *”,但是在某些情況下,這是一個很好的解決方案。
  3. 使用輔助數據庫(例如MySQL),該數據庫在文件擴展名以及您需要的其他文件上建立索引,並且包含對S3位置的引用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM