本文介紹如何使用OSS Harmony SDK設定和擷取檔案中繼資料。
注意事項
關於OSS支援的Region與Endpoint的對應關係,請參見地區和Endpoint。
要設定檔案中繼資料,您必須具有
oss:PutObject許可權;要擷取檔案中繼資料,您必須具有oss:GetObject許可權。具體操作,請參見為RAM使用者授予自訂的權限原則。
上傳檔案時設定中繼資料
以下代碼使用上傳檔案為例,在上傳檔案時設定檔案為公用讀取。
import Client, { EObjectAcl, RequestError } from '@aliyun/oss';
// 建立OSS用戶端執行個體
const client = new Client({
// 請替換為STS臨時訪問憑證的Access Key ID
accessKeyId: 'yourAccessKeyId',
// 請替換為STS臨時訪問憑證的Access Key Secret
accessKeySecret: 'yourAccessKeySecret',
// 請替換為STS臨時訪問憑證的Security Token
securityToken: 'yourSecurityToken',
// 填寫Bucket所在地區。以華東1(杭州)為例,Region填寫為oss-cn-hangzhou
region: 'oss-cn-hangzhou',
});
const bucket = 'yourBucketName'; // 請替換為您想要使用的Bucket名稱
const key = 'yourObjectName'; // 請替換為您想要上傳的對象(檔案)名稱
const putObject = async () => {
try {
// 調用putObject方法上傳資料到指定的Bucket和Key,並傳入資料作為參數
const res = await client.putObject({
bucket, // Bucket名稱
key, // 對象(檔案)名稱
data: 'hello world', // 要上傳的資料,這裡是一個簡單的字串
objectAcl: EObjectAcl.PRIVATE
});
// 列印上傳結果
console.log(JSON.stringify(res));
} catch (err) {
// 捕獲請求過程中的異常資訊
if (err instanceof RequestError) {
// 如果是已知類型的錯誤,則列印錯誤碼、錯誤訊息、請求ID、狀態代碼、EC碼等資訊
console.log('code: ', err.code);
console.log('message: ', err.message);
console.log('requestId: ', err.requestId);
console.log('status: ', err.status);
console.log('ec: ', err.ec);
} else {
// 列印其他未知類型的錯誤
console.log('unknown error: ', err);
}
}
}
// 調用putObject函數執行上傳操作
putObject();擷取檔案中繼資料
使用HeadObject方法擷取對象的所有中繼資料
您可以通過以下代碼使用HeadObject方法擷取指定Object的所有中繼資料。
import Client, { RequestError } from '@aliyun/oss';
// 建立OSS用戶端執行個體
const client = new Client({
// 請替換為STS臨時訪問憑證的Access Key ID
accessKeyId: 'yourAccessKeyId',
// 請替換為STS臨時訪問憑證的Access Key Secret
accessKeySecret: 'yourAccessKeySecret',
// 請替換為STS臨時訪問憑證的Security Token
securityToken: 'yourSecurityToken',
// 填寫Bucket所在地區。以華東1(杭州)為例,Region填寫為oss-cn-hangzhou
region: 'oss-cn-hangzhou',
});
// 指定要操作的Bucket名稱,請替換為您實際使用的Bucket名稱
const bucket = 'yourBucketName';
// 指定要查詢的對象(檔案)名稱,請替換為您實際要查詢的對象名稱
const key = 'yourObjectName';
/**
* 擷取對象的元資訊。
* 使用headObject方法擷取指定對象的元資訊,而不下載對象內容。
*/
const headObject = async () => {
try {
// 調用headObject方法擷取指定對象的元資訊
const res = await client.headObject({
bucket, // Bucket名稱
key, // 對象(檔案)名稱
});
// 列印對象的元資訊
console.log(JSON.stringify(res));
} catch (err) {
// 捕獲請求過程中的異常資訊
if (err instanceof RequestError) {
// 如果是已知類型的錯誤,則列印錯誤碼、錯誤訊息、請求ID、狀態代碼、EC碼等資訊
console.log('code: ', err.code); // 錯誤碼
console.log('message: ', err.message); // 錯誤訊息
console.log('requestId: ', err.requestId); // 請求ID
console.log('status: ', err.status); // HTTP狀態代碼
console.log('ec: ', err.ec); // 錯誤碼
} else {
// 列印其他未知類型的錯誤
console.log('unknown error: ', err);
}
}
};
// 調用headObject函數執行擷取對象元資訊的操作
headObject();
使用GetObjectMeta方法擷取對象的部分中繼資料
說明
使用GetObjectMeta方法僅可以擷取部分的對象中繼資料,包括:返回內容的長度(ContentLength)、實體標籤(ETag)、返回的對象最後一次被修改的時間(LastModified)、對象最後一次被訪問的時間(LastAccessTime)、對象的版本ID(VersionId)、對象的 64 位元 CRC 值(HashCRC64)。
您可以通過以下代碼使用GetObjectMeta方法擷取指定對象的部分中繼資料。
import Client, { RequestError } from '@aliyun/oss';
// 建立OSS用戶端執行個體
const client = new Client({
// 請替換為STS臨時訪問憑證的Access Key ID
accessKeyId: 'yourAccessKeyId',
// 請替換為STS臨時訪問憑證的Access Key Secret
accessKeySecret: 'yourAccessKeySecret',
// 請替換為STS臨時訪問憑證的Security Token
securityToken: 'yourSecurityToken',
// 填寫Bucket所在地區。以華東1(杭州)為例,Region填寫為oss-cn-hangzhou
region: 'oss-cn-hangzhou',
});
// 指定要操作的Bucket名稱,請替換為您實際使用的Bucket名稱
const bucket = 'yourBucketName';
// 指定要查詢的對象(檔案)名稱,請替換為您實際要查詢的對象名稱
const key = 'yourObjectName';
/**
* 擷取對象的元資訊。
* 使用getObjectMeta方法擷取指定對象的元資訊,包括HTTP頭部資訊。
*/
const getObjectMeta = async () => {
try {
// 調用getObjectMeta方法擷取指定對象的元資訊
const res = await client.getObjectMeta({
bucket, // Bucket名稱
key, // 對象(檔案)名稱
});
// 列印對象的元資訊
console.log(JSON.stringify(res));
} catch (err) {
// 捕獲請求過程中的異常資訊
if (err instanceof RequestError) {
// 如果是已知類型的錯誤,則列印錯誤碼、錯誤訊息、請求ID、狀態代碼、EC碼等資訊
console.log('code: ', err.code); // 錯誤碼
console.log('message: ', err.message); // 錯誤訊息
console.log('requestId: ', err.requestId); // 請求ID
console.log('status: ', err.status); // HTTP狀態代碼
console.log('ec: ', err.ec); // 錯誤碼
} else {
// 列印其他未知類型的錯誤
console.log('unknown error: ', err);
}
}
};
// 調用getObjectMeta函數執行擷取對象元資訊的操作
getObjectMeta();