Topik ini menjelaskan cara menambahkan parameter pada permintaan upload atau download objek untuk mengatur batas bandwidth upload atau download, sehingga memastikan ketersediaan bandwidth yang cukup bagi aplikasi lain.
Pembatasan kecepatan upload dan download sederhana
Kode berikut menunjukkan cara mengatur pembatasan bandwidth koneksi tunggal untuk upload dan download sederhana.
const OSS = require('ali-oss')
const fs = require('fs')
const client = new OSS({
// Ganti yourregion dengan wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur Region menjadi oss-cn-hangzhou.
region: 'yourregion',
// Dapatkan kredensial akses dari variabel lingkungan. Sebelum menjalankan kode ini, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah disetel.
accessKeyId: process.env.OSS_ACCESS_KEY_ID,
accessKeySecret: process.env.OSS_ACCESS_KEY_SECRET,
authorizationV4: true,
// Ganti yourbucketname dengan nama bucket.
bucket: 'yourbucketname'
});
// Atur pembatasan bandwidth di header permintaan.
const headers = {
// Tetapkan nilai pembatasan. Nilai minimum adalah 100 KB/s.
'x-oss-traffic-limit': 8 * 1024 * 100
}
// Upload dengan pembatasan bandwidth.
async function put() {
// Jalur file.
const filePath = 'D:\\localpath\\examplefile.txt';
// Buat objek aliran file.
const fileStream = fs.createReadStream(filePath);
const result = await client.putStream('file-name', fileStream, {
// Atur header permintaan.
headers,
// Periode timeout default adalah 60000 ms. Error timeout dilaporkan jika permintaan melebihi waktu tersebut. Saat melakukan upload dengan pembatasan bandwidth, sesuaikan periode timeout.
timeout: 60000
});
console.log(result);
}
put()
// Download dengan pembatasan bandwidth.
async function get() {
const result = await client.get('file name', {
headers,
// Periode timeout default adalah 60000 ms. Error timeout dilaporkan jika permintaan melebihi waktu tersebut. Saat melakukan download dengan pembatasan bandwidth, sesuaikan periode timeout.
timeout: 60000
})
console.log(result)
}
get()Upload dan download dengan pembatasan bandwidth menggunakan URL yang ditandatangani
Kode berikut menunjukkan cara mengatur pembatasan bandwidth koneksi tunggal untuk upload dan download yang menggunakan URL yang ditandatangani.
const OSS = require('ali-oss')
const client = new OSS({
// Ganti yourregion dengan wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur Region menjadi oss-cn-hangzhou.
region: 'yourregion',
// Dapatkan kredensial akses dari variabel lingkungan. Sebelum menjalankan kode ini, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah disetel.
accessKeyId: process.env.OSS_ACCESS_KEY_ID,
accessKeySecret: process.env.OSS_ACCESS_KEY_SECRET,
authorizationV4: true,
// Ganti yourbucketname dengan nama bucket.
bucket: 'yourbucketname',
});
// Upload dengan pembatasan bandwidth menggunakan kueri URL.
async function putByQuery() {
const url = client.signatureUrl('file name', {
// Tetapkan nilai pembatasan. Nilai minimum adalah 100 KB/s.
trafficLimit: 8 * 1024 * 100,
// Atur metode permintaan menjadi PUT.
method: 'PUT'
})
// Tetapkan jalur file.
const filePath = 'D:\\localpath\\examplefile.txt';
// Buat objek aliran file.
const fileStream = fs.createReadStream(filePath);
const result = await client.urllib.request(url, {
method: 'PUT',
// Gunakan objek aliran file sebagai parameter.
stream: fileStream,
// Periode timeout default adalah 60000 ms. Setelah Anda mengaktifkan pembatasan bandwidth, sesuaikan periode timeout. Jika tidak, permintaan akan gagal.
timeout: 60000,
});
console.log(result)
}
putByQuery()
// Download dengan pembatasan bandwidth menggunakan kueri URL.
async function getByQuery() {
const url = client.signatureUrl('file name', {
// Tetapkan nilai pembatasan. Nilai minimum adalah 100 KB/s.
trafficLimit: 8 * 1024 * 100,
})
const result = await client.urllib.request(url, {
// Periode timeout default adalah 60000 ms. Setelah Anda mengaktifkan pembatasan bandwidth, sesuaikan periode timeout. Jika tidak, permintaan akan gagal.
timeout: 60000,
});
console.log(result)
}
getByQuery()Referensi
Untuk contoh kode lengkap mengenai pembatasan bandwidth koneksi tunggal, lihat contoh di GitHub.