全部產品
Search
文件中心

Object Storage Service:Node.js單連結限速

更新時間:Nov 01, 2024

本文介紹如何在上傳、下載檔案(Object)時,通過在請求中攜帶限速參數並設定限速值,以保證其他應用的正常頻寬。

簡單上傳下載限速

以下代碼用於簡單上傳、下載檔案時設定單連結限速:

const OSS = require('ali-oss')

const client = new OSS({
  // yourregion填寫Bucket所在地區。以華東1(杭州)為例,Region填寫為oss-cn-hangzhou。
  region: 'yourregion',
  // 從環境變數中擷取訪問憑證。運行本程式碼範例之前,請確保已設定環境變數OSS_ACCESS_KEY_ID和OSS_ACCESS_KEY_SECRET。
  accessKeyId: process.env.OSS_ACCESS_KEY_ID,
  accessKeySecret: process.env.OSS_ACCESS_KEY_SECRET,
  authorizationV4: true,
  // yourbucketname填寫儲存空間名稱。
  bucket: 'yourbucketname'
});

// 通過要求標頭設定限速。
const headers = {  
 // 設定限速,最小為100 KB/s。
 'x-oss-traffic-limit': 8 * 1024 * 100 
}

// 限速上傳。
async function put() {
  // 檔案路徑。
  const filePath = 'D:\\localpath\\examplefile.txt'; 
  // 建立檔案流對象。
  const fileStream = fs.createReadStream(filePath); 
  const result = await client.putStream('file-name', fileStream, {
    // 正確佈建要求頭。
    headers, 
    // 預設逾時時間長度為60000 ms。逾時直接報錯,限速上傳時注意修改逾時時間長度。
    timeout: 60000 
  });
  console.log(result);
}

put()

// 限速下載。
async function get() {
  const result = await client.get('file name', {
    headers,
    // 預設逾時時間長度為60000 ms。逾時直接報錯,限速下載時注意修改逾時時間長度。
    timeout: 60000 
  })
  console.log(result)
}

get()

使用簽名URL方式上傳下載限速

以下代碼用於使用簽名URL方式上傳、下載檔案時設定單連結限速:

const OSS = require('ali-oss')

const client = new OSS({
  // yourregion填寫Bucket所在地區。以華東1(杭州)為例,Region填寫為oss-cn-hangzhou。
  region: 'yourregion',
  // 從環境變數中擷取訪問憑證。運行本程式碼範例之前,請確保已設定環境變數OSS_ACCESS_KEY_ID和OSS_ACCESS_KEY_SECRET。
  accessKeyId: process.env.OSS_ACCESS_KEY_ID,
  accessKeySecret: process.env.OSS_ACCESS_KEY_SECRET,
  authorizationV4: true,
  // yourbucketname填寫儲存空間名稱。
  bucket: 'yourbucketname',
});

// 通過URL Query方式限速上傳。
async function putByQuery() {
  const url = client.signatureUrl('file name', {
    // 設定限速,最小為100 KB/s。
    trafficLimit: 8 * 1024 * 100, 
    // 設定PUT要求方法。
    method: 'PUT' 
  })
  // 設定檔案路徑。
  const filePath = 'D:\\localpath\\examplefile.txt'; 
  // 建立檔案流對象。
  const fileStream = fs.createReadStream(filePath); 
  const result = await client.urllib.request(url, {
    method: 'PUT',
    // 使用檔案流對象作為參數。
    stream: fileStream, 
    // 預設逾時時間長度為60000 ms。限速後注意設定逾時時間長度,否則請求失敗。
    timeout: 60000, 
  });

  console.log(result)
}

putByQuery()

// 通過URL Query方式限速下載。
async function getByQuery() {
  const url = client.signatureUrl('file name', {
    // 設定限速,最小為100 KB/s。
    trafficLimit: 8 * 1024 * 100, 
  })

  const result = await client.urllib.request(url, {
    // 預設逾時時間長度為60000 ms。限速後注意設定逾時時間長度,否則請求失敗。
    timeout: 60000, 
  });

  console.log(result)
}

getByQuery()

相關文檔

關於單連結限速的完整範例程式碼,請參見GitHub樣本