[英]AWS S3 No Such Key Exist Error
我的客戶端在AWS-S3上存儲了許多圖像。 我能夠得到那些圖像。 問題是,他們以前使用數字鍵存儲圖像,而現在使用GUID。 例如,密鑰可以是12345 / MyFile.jpg或ASDF-XYZ / MyFile.jpg,並且它們不存儲密鑰。 存儲在數據庫中的唯一內容是userId和fileName。 所以我在數據庫中只有12345 / MyFile.jpg。 當我嘗試使用以下代碼時:
var params = {
Bucket: bucketName,
Key: "12345/MyFile.jpg",
IfMatch: eTag,
};
var fileStream = s3.getObject(params).createReadStream();
這僅在存在的情況下有效。 如果文件不存在,則會引發異常“不存在這樣的密鑰”。 因此該文件位於GUID密鑰下。
var params = {
Bucket: bucketName,
Key: "ASDF-XYZ/MyFile.jpg",
IfMatch: eTag,
};
var fileStream = s3.getObject(params).createReadStream();
這可行。 那么,有什么方法可以檢查文件是否存在於數字目錄中(為澄清起見),代碼從該目錄中讀取,否則應該從GUID目錄獲取圖像? 我嘗試過try-catch,但這不起作用。
通常的做法是使用headObject
檢查S3中的元數據,您可以使用它來查找是否存在該錯誤,如果存在,則返回舊樣式。
以下代碼博客假定您首先嘗試數字目錄,然后回退到GUID。
s3.headObject(numericDirectoryParams).on('success', function(response) {
return s3.getObject(numericDirectoryParams).createReadStream();
}).on('error',function(error){
// File did not exist in numeric directory, get in GUID
return s3.getObject(GUIDparams).createReadStream();
}).send();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.