本文介绍如何在上传、下载文件(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示例。