全部產品
Search
文件中心

Object Storage Service:管理檔案中繼資料(Harmony SDK)

更新時間:Nov 29, 2025

本文介紹如何使用OSS Harmony SDK設定和擷取檔案中繼資料。

注意事項

上傳檔案時設定中繼資料

以下代碼使用上傳檔案為例,在上傳檔案時設定檔案為公用讀取。

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();