本文介绍如何在上传、下载文件(Object)时,通过在请求中携带限速参数并设置限速值,以保证其他应用的正常带宽。
简单上传下载限速
以下代码用于简单上传、下载文件时设置单链接限速:
const OSS = require('ali-oss')
const client = new OSS({
// yourregion填写Bucket所在地域。以华东1(杭州)为例,Region填写为oss-cn-hangzhou。
region: 'yourregion',
// 阿里云账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM用户进行API访问或日常运维,请登录RAM控制台创建RAM用户。
accessKeyId: 'yourAccessKeyId',
accessKeySecret: 'yourAccessKeySecret',
// yourbucketname填写存储空间名称。
bucket: 'yourbucketname'
});
// 通过请求头设置限速。
const headers = {
'x-oss-traffic-limit': 8 * 1024 * 100 // 设置限速,最小为100 KB/s。
}
// 限速上传。
async function put() {
const result = await client.putStream('file name', 'file stream', {
headers,
timeout: 60000 // 默认超时时长为60000 ms。超时直接报错,限速上传时注意修改超时时长。
})
console.log(result)
}
put()
// 限速下载。
async function get() {
const result = await client.get('file name', {
headers,
timeout: 60000 // 默认超时时长为60000 ms。超时直接报错,限速下载时注意修改超时时长。
})
console.log(result)
}
get()
使用签名URL方式上传下载限速
以下代码用于使用签名URL方式上传、下载文件时设置单链接限速:
const OSS = require('ali-oss')
const client = new OSS({
// yourregion填写Bucket所在地域。以华东1(杭州)为例,Region填写为oss-cn-hangzhou。
region: 'yourregion',
// 阿里云账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM用户进行API访问或日常运维,请登录RAM控制台创建RAM用户。
accessKeyId: 'yourAccessKeyId',
accessKeySecret: 'yourAccessKeySecret',
// yourbucketname填写存储空间名称。
bucket: 'yourbucketname'
});
// 通过URL Query方式限速上传。
async function putByQuery() {
const url = client.signatureUrl('file name', {
trafficLimit: 8 * 1024 * 100, // 设置限速,最小为100 KB/s。
method: 'PUT' // 设置PUT请求方法。
})
const result = await client.urllib.request(url, {
method: 'PUT',
stream: 'file stream'
timeout: 60000, // 默认超时时长为60000 ms。限速后注意设置超时时长,否则请求失败。
});
console.log(result)
}
putByQuery()
// 通过URL Query方式限速下载。
async function getByQuery() {
const url = client.signatureUrl('file name', {
trafficLimit: 8 * 1024 * 100, // 设置限速,最小为100 KB/s。
})
const result = await client.urllib.request(url, {
timeout: 60000, // 默认超时时长为60000 ms。限速后注意设置超时时长,否则请求失败。
});
console.log(result)
}
getByQuery()
相关文档
关于单链接限速的完整示例代码,请参见GitHub示例。