Object Storage Service儲存的檔案(Object)資訊包含Key、Data和Object Meta。Object Meta是對檔案的屬性描述,包括HTTP標準屬性(HTTP Header)和使用者自訂中繼資料(User Meta)兩種。您可以通過設定HTTP標準屬性來自訂HTTP請求的策略,例如檔案(Object)緩衝策略、強制下載策略等。您還可以通過設定使用者自訂中繼資料來標識Object的用途或屬性等。
上傳檔案時指定檔案中繼資料
使用put、putStream和multipartUpload時,都可以通過指定meta參數來指定檔案的中繼資料:
const OSS = require('ali-oss');
const path = require('path');
const client = new OSS({
// 從環境變數中擷取訪問憑證。運行本程式碼範例之前,請確保已設定環境變數OSS_ACCESS_KEY_ID和OSS_ACCESS_KEY_SECRET。
accessKeyId: process.env.OSS_ACCESS_KEY_ID,
accessKeySecret: process.env.OSS_ACCESS_KEY_SECRET,
// yourRegion填寫Bucket所在地區。以華東1(杭州)為例,Region填寫為oss-cn-hangzhou。
region: 'oss-cn-hangzhou',
// 使用V4簽名演算法
authorizationV4: true,
// yourBucketName填寫Bucket名稱。
bucket: 'yourBucketName',
// yourEndpoint填寫Bucket所在地區對應的公網Endpoint。以華東1(杭州)為例,Endpoint填寫為https://oss-cn-hangzhou.aliyuncs.com。
endpoint: 'https://oss-cn-hangzhou.aliyuncs.com',
});
async function put() {
try {
// 中繼資料設定方式:作為 options 對象的 meta 屬性
let result = await client.put('object-name', path.normalize('D:\\localpath\\examplefile.txt'), {
meta: {
year: '2025', // 中繼資料值應該是字串
people: 'mary'
}
});
console.log(result);
} catch (e) {
console.log(e);
}
}
put();修改已有檔案的檔案中繼資料
您還可以通過putMeta介面來更新檔案中繼資料:
const OSS = require('ali-oss');
const client = new OSS({
// 從環境變數中擷取訪問憑證。運行本程式碼範例之前,請確保已設定環境變數OSS_ACCESS_KEY_ID和OSS_ACCESS_KEY_SECRET。
accessKeyId: process.env.OSS_ACCESS_KEY_ID,
accessKeySecret: process.env.OSS_ACCESS_KEY_SECRET,
// yourRegion填寫Bucket所在地區。以華東1(杭州)為例,Region填寫為oss-cn-hangzhou。
region: 'oss-cn-hangzhou',
// 使用V4簽名演算法
authorizationV4: true,
// yourBucketName填寫Bucket名稱。
bucket: 'yourBucketName',
// yourEndpoint填寫Bucket所在地區對應的公網Endpoint。以華東1(杭州)為例,Endpoint填寫為https://oss-cn-hangzhou.aliyuncs.com。
endpoint: 'https://oss-cn-hangzhou.aliyuncs.com',
});
async function putMeta() {
try {
let meta = { year: 2025, people: 'jack' };
let result = await client.putMeta('object-name', meta);
console.log(result);
} catch (e) {
console.log(e);
}
}
putMeta();擷取檔案中繼資料
您可以通過head介面來擷取檔案中繼資料。
const OSS = require('ali-oss');
const client = new OSS({
// 從環境變數中擷取訪問憑證。運行本程式碼範例之前,請確保已設定環境變數OSS_ACCESS_KEY_ID和OSS_ACCESS_KEY_SECRET。
accessKeyId: process.env.OSS_ACCESS_KEY_ID,
accessKeySecret: process.env.OSS_ACCESS_KEY_SECRET,
// yourRegion填寫Bucket所在地區。以華東1(杭州)為例,Region填寫為oss-cn-hangzhou。
region: 'oss-cn-hangzhou',
// 使用V4簽名演算法
authorizationV4: true,
// yourBucketName填寫Bucket名稱。
bucket: 'yourBucketName',
// yourEndpoint填寫Bucket所在地區對應的公網Endpoint。以華東1(杭州)為例,Endpoint填寫為https://oss-cn-hangzhou.aliyuncs.com。
endpoint: 'https://oss-cn-hangzhou.aliyuncs.com',
});
async function headInfo() {
// 填寫檔案完整路徑,例如exampledir/exampleobject.txt。檔案完整路徑中不能包含Bucket名稱。
const result = await client.head("exampledir/exampleobject.txt");
console.log(result);
}
headInfo();