簡體   English   中英

節點 AWS S3 獲取對象元數據?

[英]Node AWS S3 get object metadata?

我正在嘗試使用預簽名 URL 將用戶上傳的文件存儲在 S3 中。 這工作正常,但我使用 UUID 作為文件名以避免沖突。 我需要能夠保存文件的原始文件名,所以我將它作為元數據傳遞到簽名上傳 URL 中:

const url = await s3.getSignedUrlPromise('putObject', {
  Bucket: UPLOAD_BUCKET,
  Key: key,
  Expires: AWS_UPLOAD_EXPIRATION / 1000,
  ContentType: contentType,
  Metadata: {
    filename: originalFilename
  },
});

這似乎也工作正常(元數據顯示在 AWS 控制台中)。 如何訪問此元數據? 當客戶端需要顯示這些圖像之一時,它們會從服務器請求一個預先簽名的下載 URL,該 URL 生成如下:

const url = await s3.getSignedUrlPromise('getObject', {
  Bucket: UPLOAD_BUCKET,
  Key: key,
  Expires: AWS_DOWNLOAD_EXPIRATION / 1000,
});

此 URL 似乎不包含元數據,並且getSignedUrlPromise的返回值是一個字符串,因此除了 URL 本身之外似乎沒有任何空間。 我假設會有一個 S3 方法只獲取元數據,但據我所知它不存在(或名稱不直觀)。 考慮到存在getObjectTagginggetObjectLegalHold方法,這尤其令人困惑。 如何通過預簽名 URL 訪問元數據? 如果這不可能,我如何使用 AWS 開發工具包獲取元數據? 如果那不可能,我一定誤解了元數據的意義。

您無法使用 URL 獲取元數據,但可以使用s3.headObject方法:

const config = new AWS.Config({
      accessKeyId: 'your acessKey',
      secretAccessKey: 'your secret',
      region: 'your region',
    });
const s3 = new AWS.S3(config);

const params = {
  Bucket: 'your bucket',
  Key: 'your assetKey'
}
const metaData = await s3.headObject(params).promise();

文檔

暫無
暫無

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

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