本文介紹如何在上傳、下載檔案(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樣本。