All Products
Search
Document Center

Object Storage Service:Pembatasan bandwidth koneksi tunggal

Last Updated:Aug 27, 2026

Mengakses file (objek) di Object Storage Service (OSS) dapat mengonsumsi bandwidth dalam jumlah besar. Pada klien yang sulit menerapkan traffic shaping, hal ini dapat memengaruhi aplikasi lain. Untuk menghindari masalah tersebut, Anda dapat menggunakan fitur pembatasan bandwidth koneksi tunggal yang disediakan oleh OSS guna mengontrol lalu lintas selama operasi seperti unggah dan unduh file, sehingga memastikan tersedianya bandwidth jaringan yang cukup bagi aplikasi lain.

Catatan penggunaan

Sertakan parameter x-oss-traffic-limit dalam permintaan PutObject, AppendObject, PostObject, CopyObject, UploadPart, UploadPartCopy, dan GetObject, lalu tentukan nilai pembatasannya. Nilai tersebut harus berada dalam rentang 819.200 hingga 838.860.800 bit/s.

Pembatasan kecepatan permintaan klien

Anda hanya dapat membatasi kecepatan permintaan klien menggunakan kit pengembangan perangkat lunak (SDK). Kode berikut menyajikan contoh cara membatasi kecepatan permintaan unggah atau unduh menggunakan SDK umum. Untuk contoh kode yang menggunakan SDK lainnya, lihat Ikhtisar SDK.

Pembatasan kecepatan unggah dan unduh sederhana

import com.aliyun.oss.*;
import com.aliyun.oss.common.auth.*;
import com.aliyun.oss.common.comm.SignVersion;
import com.aliyun.oss.model.GetObjectRequest;
import com.aliyun.oss.model.PutObjectRequest;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;

public class Demo {
    public static void main(String[] args) throws Throwable {
        // Dalam contoh ini, titik akhir wilayah China (Hangzhou) digunakan. Tentukan titik akhir aktual Anda. 
        String endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
        // Dapatkan kredensial akses dari variabel lingkungan. Sebelum Anda menjalankan contoh kode, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah dikonfigurasi. 
        EnvironmentVariableCredentialsProvider credentialsProvider = CredentialsProviderFactory.newEnvironmentVariableCredentialsProvider();
        // Tentukan nama bucket. Contoh: examplebucket. 
        String bucketName = "examplebucket";
        // Tentukan jalur lengkap objek. Jangan sertakan nama bucket dalam jalur lengkap. Contoh: exampledir/exampleobject.txt. 
        String objectName = "exampledir/exampleobject.txt";
        // Tentukan jalur lengkap file lokal yang ingin Anda unggah. Contoh: D:\\localpath\\examplefile.txt. 
        // Jika Anda tidak menentukan jalur file lokal, file lokal akan diunggah dari jalur proyek tempat program contoh berada. 
        String localFileName = "D:\\localpath\\examplefile.txt";
        // Tentukan jalur lengkap untuk mengunduh objek. Jika file dengan nama yang sama sudah ada, objek yang diunduh akan menimpa file tersebut. Jika tidak, objek yang diunduh akan disimpan di jalur tersebut. 
        // Jika Anda tidak menentukan jalur untuk objek yang diunduh, objek yang diunduh akan disimpan ke jalur proyek tempat program contoh berada. 
        String downLoadFileName = "D:\\localpath\\exampleobject.txt";

        // Atur batas bandwidth ke 100 KB/s. 
        int limitSpeed = 100 * 1024 * 8;
        // Tentukan wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur wilayah ke cn-hangzhou. 
        String region = "cn-hangzhou";

        // Buat instans Klien OSS. 
        // Panggil metode shutdown untuk melepas sumber daya terkait saat Klien OSS tidak lagi digunakan.
        ClientBuilderConfiguration clientBuilderConfiguration = new ClientBuilderConfiguration();
        clientBuilderConfiguration.setSignatureVersion(SignVersion.V4);        
        OSS ossClient = OSSClientBuilder.create()
        .endpoint(endpoint)
        .credentialsProvider(credentialsProvider)
        .clientConfiguration(clientBuilderConfiguration)
        .region(region)               
        .build();

        try {
            // Konfigurasikan pembatasan bandwidth untuk pengunggahan objek. 
            InputStream inputStream = new FileInputStream(localFileName);
            PutObjectRequest PutObjectRequest = new PutObjectRequest(bucketName, objectName, inputStream);
            PutObjectRequest.setTrafficLimit(limitSpeed);
            ossClient.putObject(PutObjectRequest);

            // Konfigurasikan pembatasan bandwidth untuk pengunduhan objek. 
            GetObjectRequest getObjectRequest = new GetObjectRequest(bucketName, objectName);
            getObjectRequest.setTrafficLimit(limitSpeed);
            File localFile = new File(downLoadFileName);
            ossClient.getObject(getObjectRequest, localFile);
        } catch (OSSException oe) {
            System.out.println("Caught an OSSException, which means your request made it to OSS, "
                    + "but was rejected with an error response for some reason.");
            System.out.println("Error Message:" + oe.getErrorMessage());
            System.out.println("Error Code:" + oe.getErrorCode());
            System.out.println("Request ID:" + oe.getRequestId());
            System.out.println("Host ID:" + oe.getHostId());
        } catch (ClientException ce) {
            System.out.println("Caught an ClientException, which means the client encountered "
                    + "a serious internal problem while trying to communicate with OSS, "
                    + "such as not being able to access the network.");
            System.out.println("Error Message:" + ce.getMessage());
        } finally {
            if (ossClient != null) {
                ossClient.shutdown();
            }
        }
    }
}
<?php
if (is_file(__DIR__ . '/../autoload.php')) {
    require_once __DIR__ . '/../autoload.php';
}
if (is_file(__DIR__ . '/../vendor/autoload.php')) {
    require_once __DIR__ . '/../vendor/autoload.php';
}

use OSS\Credentials\EnvironmentVariableCredentialsProvider;
use OSS\OssClient;
use OSS\CoreOssException;

// Dapatkan kredensial akses dari variabel lingkungan. Sebelum menjalankan kode contoh ini, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah dikonfigurasi.  
$provider = new EnvironmentVariableCredentialsProvider();
// Tentukan titik akhir wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur titik akhir menjadi https://oss-cn-hangzhou.aliyuncs.com. 
$endpoint = "yourEndpoint";
// Tentukan nama bucket. Contoh: examplebucket. 
$bucket= "examplebucket";
// Tentukan path lengkap objek. Contoh: exampledir/exampleobject.txt. Jangan sertakan nama bucket dalam path lengkap tersebut. 
$object = "exampledir/exampleobject.txt";
// Tentukan konten objek. 
$content = "hello world";

$config = array(
        "provider" => $provider,
        "endpoint" => $endpoint,
        "signatureVersion" => OssClient::OSS_SIGNATURE_VERSION_V4,
        "region"=> "cn-hangzhou"
    );
    $ossClient = new OssClient($config);

// Atur batas bandwidth menjadi 100 KB/detik, yang setara dengan 819.200 bit/detik. 
$options = array(
      OssClient::OSS_HEADERS => array(
              OssClient::OSS_TRAFFIC_LIMIT => 819200,
));

try {
    // Konfigurasikan pembatasan bandwidth untuk upload objek. 
    $ossClient->putObject($bucket, $object, $content, $options);

    // Konfigurasikan pembatasan bandwidth untuk download objek. 
    $ossClient->getObject($bucket, $object, $options);
} catch (OssException $e) {
    printf(__FUNCTION__ . ": FAILED\n");
    printf($e->getMessage() . "\n");
    return;
}

print(__FUNCTION__ . ": OK" . "\n");
const OSS = require('ali-oss')
const fs = require('fs')

const client = new OSS({
  // Tentukan wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur wilayah ke oss-cn-hangzhou. 
  region: 'yourregion',
  // Dapatkan kredensial akses dari variabel lingkungan. Sebelum Anda menjalankan kode sampel, pastikan Anda telah mengonfigurasi variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET. 
  accessKeyId: process.env.OSS_ACCESS_KEY_ID,
  accessKeySecret: process.env.OSS_ACCESS_KEY_SECRET,
  authorizationV4: true,
  // Tentukan nama bucket Anda. 
  bucket: 'yourbucketname'
});

// Konfigurasikan batas kecepatan dengan menggunakan header permintaan. 
const headers = {  
 // Atur bandwidth minimum ke 100 KB/s. 
 'x-oss-traffic-limit': 8 * 1024 * 100 
}

// Konfigurasikan pembatasan bandwidth untuk objek yang akan diunggah. 
async function put() {
  // Tentukan path objek. 
  const filePath = 'D:\\localpath\\examplefile.txt'; 
  // Buat aliran file untuk objek. 
  const fileStream = fs.createReadStream(filePath); 
  const result = await client.putStream('file-name', fileStream, {
    // Atur header permintaan dengan benar. 
    headers, 
    // Atur periode waktu habis default ke 60000. Unit: milidetik. Jika durasi unggahan objek melebihi periode waktu habis, pengecualian akan terjadi. Saat mengonfigurasi pembatasan bandwidth untuk unggahan objek, ubah periode waktu habis. 
    timeout: 60000 
  });
  console.log(result);
}

put()

// Konfigurasikan pembatasan bandwidth untuk objek yang akan diunduh. 
async function get() {
  const result = await client.get('file name', {
    headers,
    // Atur periode waktu habis default ke 60000. Unit: milidetik. Jika durasi unduhan objek melebihi periode waktu habis, pengecualian akan terjadi. Saat mengonfigurasi pembatasan bandwidth untuk unduhan objek, ubah periode waktu habis. 
    timeout: 60000 
  })
  console.log(result)
}

get()
# -*- coding: utf-8 -*-

import oss2
from oss2.credentials import EnvironmentVariableCredentialsProvider
from oss2.models import OSS_TRAFFIC_LIMIT

# Dapatkan kredensial akses dari variabel lingkungan. Sebelum Anda menjalankan kode sampel, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah dikonfigurasi. 
auth = oss2.ProviderAuthV4(EnvironmentVariableCredentialsProvider())

# Tentukan titik akhir wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur titik akhir ke https://oss-cn-hangzhou.aliyuncs.com. 
endpoint = "https://oss-cn-hangzhou.aliyuncs.com"
# Tentukan ID wilayah yang memetakan ke titik akhir. Contoh: cn-hangzhou. Parameter ini wajib diisi jika Anda menggunakan algoritma tanda tangan V4.
region = "cn-hangzhou"

# Tentukan nama bucket. 
bucket = oss2.Bucket(auth, endpoint, "examplebucket", region=region)

# Tentukan jalur lengkap objek. Jangan sertakan nama bucket dalam jalur lengkap. Contoh: exampledir/exampleobject.txt. 
object_name = 'exampledir/exampleobject.txt'
# Tentukan jalur lengkap file lokal yang ingin Anda unggah. Contoh: D:\\localpath\\examplefile.txt. Secara default, jika Anda tidak menentukan jalur file lokal, file lokal akan diunggah dari jalur proyek tempat program sampel berada. 
local_file_name = 'D:\\localpath\\examplefile.txt'
# Tentukan jalur lokal tempat Anda ingin mengunduh objek. Jika file dengan nama yang sama sudah ada, objek yang diunduh akan menimpa file tersebut. Jika tidak ada file dengan nama yang sama, objek yang diunduh akan disimpan di jalur tersebut. 
# Jika Anda tidak menentukan jalur untuk objek yang diunduh, objek yang diunduh akan disimpan ke jalur proyek tempat program sampel berada. 
down_file_name = 'D:\\localpath\\exampleobject.txt'

# Konfigurasikan parameter header untuk mengatur batas bandwidth ke 100 KB/s, yang sama dengan 819.200 bit/s. 
limit_speed = (100 * 1024 * 8)
headers = dict()
headers[OSS_TRAFFIC_LIMIT] = str(limit_speed)

# Konfigurasikan pembatasan bandwidth untuk pengunggahan objek. 
result = bucket.put_object_from_file(object_name, local_file_name, headers=headers)
print('http response status:', result.status)

# Konfigurasikan pembatasan bandwidth untuk pengunduhan objek. 
result = bucket.get_object_to_file(object_name, down_file_name, headers=headers)
print('http response status:', result.status)
using System.Text;
using Aliyun.OSS;
using Aliyun.OSS.Common;

// Tentukan titik akhir wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur titik akhir ke https://oss-cn-hangzhou.aliyuncs.com. 
var endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
// Dapatkan kredensial akses dari variabel lingkungan. Sebelum Anda menjalankan kode sampel, pastikan bahwa variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah dikonfigurasi. 
var accessKeyId = Environment.GetEnvironmentVariable("OSS_ACCESS_KEY_ID");
var accessKeySecret = Environment.GetEnvironmentVariable("OSS_ACCESS_KEY_SECRET");
// Tentukan nama bucket. Contoh: examplebucket. 
var bucketName = "examplebucket";
// Tentukan path lengkap objek. Jangan sertakan nama bucket dalam path lengkap. Contoh: exampledir/exampleobject.txt. 
var objectName = "exampledir/exampleobject.txt";
var objectContent = "More than just cloud.";
// Tentukan wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur wilayah ke cn-hangzhou.
const string region = "cn-hangzhou";
            
// Buat instans ClientConfiguration dan ubah parameter sesuai kebutuhan.
var conf = new ClientConfiguration();
            
// Gunakan algoritma tanda tangan V4.
conf.SignatureVersion = SignatureVersion.V4;
            
// Buat instans OSSClient.
var client = new OssClient(endpoint, accessKeyId, accessKeySecret, conf);
client.SetRegion(region);
try
{
    byte[] binaryData = Encoding.ASCII.GetBytes(objectContent);
    MemoryStream requestContent = new MemoryStream(binaryData);
    // Atur batas bandwidth untuk unggahan objek ke 100 KB/dtk, yang sama dengan 819.200 bit/dtk. 
    var putRequest = new PutObjectRequest(bucketName, objectName, requestContent)
    {
        TrafficLimit = 100*1024*8
    };
    client.PutObject(putRequest);
    Console.WriteLine("Put object succeeded");

    // Atur batas bandwidth untuk unduhan objek ke 100 KB/dtk, yang sama dengan 819.200 bit/dtk. 
    var getRequest = new GetObjectRequest(bucketName, objectName)
    {
        TrafficLimit = 100 * 1024 * 8
    };
    var getResult = client.GetObject(getRequest);
    Console.WriteLine("Get object succeeded");
}
catch (Exception ex)
{
    Console.WriteLine("Put object failed, {0}", ex.Message);
}
package main

import (
	"log"
	"os"

	"github.com/aliyun/aliyun-oss-go-sdk/oss"
)

func main() {
	// Dapatkan kredensial akses dari variabel lingkungan. Sebelum Anda menjalankan kode sampel, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah dikonfigurasi. 
	provider, err := oss.NewEnvironmentVariableCredentialsProvider()
	if err != nil {
		log.Fatalf("Failed to create credentials provider: %v", err)
	}

	// Buat instans OSSClient. 
	// Tentukan titik akhir wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur titik akhir ke https://oss-cn-hangzhou.aliyuncs.com. Tentukan titik akhir Anda yang sebenarnya. 
	// Tentukan wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur wilayah ke cn-hangzhou. Tentukan wilayah yang sebenarnya.
	options := []oss.ClientOption{oss.SetCredentialsProvider(&provider)}
	options = append(options, oss.Region("yourRegion"))
	// Tentukan versi algoritma tanda tangan.
	options = append(options, oss.AuthVersion(oss.AuthV4))
	client, err := oss.New("yourEndpoint", "", "", options...)
	if err != nil {
		log.Fatalf("Failed to create OSS client: %v", err)
	}

	// Tentukan nama bucket. Contoh: examplebucket. 
	bucketName := "examplebucket"
	bucket, err := client.Bucket(bucketName)
	if err != nil {
		log.Fatalf("Failed to get bucket '%s': %v", bucketName, err)
	}

	// Tentukan jalur lengkap file lokal yang ingin Anda unggah. Contoh: D:\\localpath\\examplefile.txt. 
	// Jika Anda tidak menentukan jalur file lokal, file lokal akan diunggah dari jalur proyek tempat program sampel berada. 
	localFilePath := "D:\\localpath\\examplefile.txt"
	fd, err := os.Open(localFilePath)
	if err != nil {
		log.Fatalf("Failed to open local file '%s': %v", localFilePath, err)
	}
	defer fd.Close()

	// Tentukan batas bandwidth untuk unggahan. Nilai parameter harus berupa angka. Unit default: bit/s. Dalam contoh ini, batas bandwidth diatur ke 5 MB/s. 
	var traffic int64 = 41943040

	// Konfigurasikan pembatasan bandwidth untuk unggahan objek. 
	// Tentukan jalur lengkap objek. Jangan sertakan nama bucket di jalur lengkap. 
	objectName := "exampledir/exampleobject.txt"
	err = bucket.PutObject(objectName, fd, oss.TrafficLimitHeader(traffic))
	if err != nil {
		log.Fatalf("Failed to upload object '%s': %v", objectName, err)
	}

	// Konfigurasikan pembatasan bandwidth untuk unduhan objek. 
	// Tentukan jalur lengkap objek. Jangan sertakan nama bucket di jalur lengkap. Contoh: exampledir/exampleobject.txt. Kemudian, tentukan jalur lengkap file lokal. Contoh: D:\\localpath\\exampleobject.txt. 
	downloadFilePath := "D:\\localpath\\exampleobject.txt"
	err = bucket.GetObjectToFile(objectName, downloadFilePath, oss.TrafficLimitHeader(traffic))
	if err != nil {
		log.Fatalf("Failed to download object '%s' to '%s': %v", objectName, downloadFilePath, err)
	}

	log.Println("Upload and download completed successfully")
}
#include <alibabacloud/oss/OssClient.h>
#include <fstream>
using namespace AlibabaCloud::OSS;

int main(void)
{
    /* Inisialisasi informasi akun OSS. */
    
    /* Atur yourEndpoint ke titik akhir wilayah tempat bucket berada. Misalnya, untuk wilayah China (Hangzhou), atur titik akhir ke https://oss-cn-hangzhou.aliyuncs.com. */
    std::string Endpoint = "yourEndpoint";
    /* Atur yourRegion ke wilayah tempat bucket berada. Misalnya, untuk wilayah China (Hangzhou), atur wilayah ke cn-hangzhou. */
    std::string Region = "yourRegion";
    /* Tentukan nama bucket, misalnya, examplebucket. */
    std::string BucketName = "examplebucket";
    /* Tentukan jalur lengkap objek. Jalur lengkap tidak boleh berisi nama bucket. Misalnya, exampledir/exampleobject.txt. */
    std::string ObjectName = "exampledir/exampleobject.txt";

    /* Inisialisasi sumber daya jaringan. */
    InitializeSdk();

    ClientConfiguration conf;
    conf.signatureVersion = SignatureVersionType::V4;
    /* Dapatkan kredensial akses dari variabel lingkungan. Sebelum Anda menjalankan kode sampel ini, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah diatur. */
    auto credentialsProvider = std::make_shared<EnvironmentVariableCredentialsProvider>();
    OssClient client(Endpoint, credentialsProvider, conf);
    client.SetRegion(Region);

    /* Unggah file. */
    std::shared_ptr<std::iostream> content = std::make_shared<std::fstream>("yourLocalFilename", std::ios::in|std::ios::binary);
    PutObjectRequest putrequest(BucketName, ObjectName,content);
    /* Atur batas bandwidth unggah ke 100 KB/dtk. */
    putrequest.setTrafficLimit(819200);
    auto putoutcome = client.PutObject(putrequest);

    /* Unduh file ke memori lokal. */
    GetObjectRequest getrequest(BucketName, ObjectName);
    /* Atur batas bandwidth unduh ke 100 KB/dtk. */
    getrequest.setTrafficLimit(819200);
    auto getoutcome = client.GetObject(getrequest);

    /* Lepaskan sumber daya jaringan. */
    ShutdownSdk();
    return 0;
}

Pembatasan kecepatan unggah multi-bagian

import com.aliyun.oss.*;
import com.aliyun.oss.common.auth.*;
import com.aliyun.oss.common.comm.SignVersion;
import com.aliyun.oss.model.*;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;

public class DemoApi2 {

    public static void main(String[] args) throws Exception {
        // Dalam contoh ini, titik akhir wilayah China (Hangzhou) digunakan. Tentukan titik akhir Anda yang sebenarnya. 
        String endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
        // Dapatkan kredensial akses dari variabel lingkungan. Sebelum Anda menjalankan kode sampel, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah dikonfigurasi. 
        EnvironmentVariableCredentialsProvider credentialsProvider = CredentialsProviderFactory.newEnvironmentVariableCredentialsProvider();
        // Tentukan nama bucket. Contoh: examplebucket. 
        String bucketName = "examplebucket";
        // Tentukan jalur lengkap objek. Contoh: exampledir/exampleobject.txt. Jangan sertakan nama bucket di jalur lengkap. 
        String objectName = "exampledir/exampleobject.txt";
        // Atur batas bandwidth ke 100 KB/dtk. 
        int limitSpeed = 100 * 1024 * 8;
        // Tentukan wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur wilayah ke cn-hangzhou. 
        String region = "cn-hangzhou";

        // Buat instans Klien OSS. 
        // Panggil metode shutdown untuk melepaskan sumber daya terkait saat Klien OSS tidak lagi digunakan.
        ClientBuilderConfiguration clientBuilderConfiguration = new ClientBuilderConfiguration();
        clientBuilderConfiguration.setSignatureVersion(SignVersion.V4);        
        OSS ossClient = OSSClientBuilder.create()
        .endpoint(endpoint)
        .credentialsProvider(credentialsProvider)
        .clientConfiguration(clientBuilderConfiguration)
        .region(region)               
        .build();
        
        try {
            // Buat objek InitiateMultipartUploadRequest. 
            InitiateMultipartUploadRequest request = new InitiateMultipartUploadRequest(bucketName, objectName);


            // Inisialisasi tugas unggah multi-bagian. 
            InitiateMultipartUploadResult upresult = ossClient.initiateMultipartUpload(request);
            // Dapatkan ID unggahan, yang secara unik mengidentifikasi tugas unggah multi-bagian. Anda dapat menggunakan ID unggahan untuk melakukan operasi terkait, seperti membatalkan dan membuat kueri tugas unggah multi-bagian. 
            String uploadId = upresult.getUploadId();

            // partETags adalah set PartETags. PartETag terdiri dari nomor bagian dan ETag dari bagian yang diunggah 
            List<PartETag> partETags =  new ArrayList<PartETag>();
            // Tentukan ukuran setiap bagian, yang digunakan untuk menghitung jumlah bagian objek. Unit: byte. 
            final long partSize = 1 * 1024 * 1024L;   // Atur ukuran bagian ke 1 MB. 

            // Tentukan jalur lengkap file lokal yang ingin Anda unggah. Secara default, jika Anda tidak menentukan jalur lengkap file lokal, file lokal diunggah dari jalur proyek tempat program sampel berada. 
            final File sampleFile = new File("D:\\localpath\\examplefile.txt");
            long fileLength = sampleFile.length();
            int partCount = (int) (fileLength / partSize);
            if (fileLength % partSize != 0) {
                partCount++;
            }
            // Unggah semua bagian. 
            for (int i = 0; i < partCount; i++) {
                long startPos = i * partSize;
                long curPartSize = (i + 1 == partCount) ? (fileLength - startPos) : partSize;
                InputStream instream = new FileInputStream(sampleFile);
                // Lewati bagian yang sudah diunggah. 
                instream.skip(startPos);
                UploadPartRequest uploadPartRequest = new UploadPartRequest();
                uploadPartRequest.setBucketName(bucketName);
                uploadPartRequest.setKey(objectName);
                uploadPartRequest.setUploadId(uploadId);
                uploadPartRequest.setInputStream(instream);
                // Tentukan ukuran setiap bagian. Setiap bagian kecuali bagian terakhir harus sama dengan atau lebih besar dari 100 KB. 
                uploadPartRequest.setPartSize(curPartSize);
                // Tentukan nomor bagian. Setiap bagian memiliki nomor bagian. Nomornya berkisar dari 1 hingga 10.000. Jika nomor yang ditentukan berada di luar jangkauan, OSS akan menampilkan kode kesalahan InvalidArgument. 
                uploadPartRequest.setPartNumber( i + 1);
                // Tentukan batas bandwidth.
                uploadPartRequest.setTrafficLimit(limitSpeed);
                // Bagian tidak harus diunggah secara berurutan. Bagian dapat diunggah dari Klien OSS yang berbeda. OSS mengurutkan bagian berdasarkan nomor bagiannya dan menggabungkannya menjadi objek yang lengkap. 
                UploadPartResult uploadPartResult = ossClient.uploadPart(uploadPartRequest);
                // Setiap kali sebuah bagian diunggah, OSS akan menampilkan hasil yang berisi PartETag. PartETags disimpan di partETags. 
                partETags.add(uploadPartResult.getPartETag());
            }


            // Buat objek CompleteMultipartUploadRequest. 
            // Saat Anda memanggil operasi CompleteMultipartUpload, Anda harus menyediakan semua PartETags yang valid. Setelah OSS menerima PartETags, OSS memverifikasi semua bagian satu per satu. Setelah semua bagian diverifikasi, OSS menggabungkan bagian-bagian ini menjadi objek yang lengkap. 
            CompleteMultipartUploadRequest completeMultipartUploadRequest =
                    new CompleteMultipartUploadRequest(bucketName, objectName, uploadId, partETags);

            // Selesaikan tugas unggah multi-bagian. 
            CompleteMultipartUploadResult completeMultipartUploadResult = ossClient.completeMultipartUpload(completeMultipartUploadRequest);
            System.out.println(completeMultipartUploadResult.getETag());
        } catch (OSSException oe) {
            System.out.println("Caught an OSSException, which means your request made it to OSS, "
                    + "but was rejected with an error response for some reason.");
            System.out.println("Error Message:" + oe.getErrorMessage());
            System.out.println("Error Code:" + oe.getErrorCode());
            System.out.println("Request ID:" + oe.getRequestId());
            System.out.println("Host ID:" + oe.getHostId());
        } catch (ClientException ce) {
            System.out.println("Caught an ClientException, which means the client encountered "
                    + "a serious internal problem while trying to communicate with OSS, "
                    + "such as not being able to access the network.");
            System.out.println("Error Message:" + ce.getMessage());
        } finally {
            if (ossClient != null) {
                ossClient.shutdown();
            }
        }
    }
}
<?php
  if (is_file(__DIR__ . '/../autoload.php')) {
  require_once __DIR__ . '/../autoload.php';
  }
  if (is_file(__DIR__ . '/../vendor/autoload.php')) {
  require_once __DIR__ . '/../vendor/autoload.php';
  }
use OSS\Credentials\EnvironmentVariableCredentialsProvider;
use OSS\OssClient;
use OSS\Core\OssException;
use OSS\Core\OssUtil;

// Dapatkan kredensial akses dari variabel lingkungan. Sebelum Anda menjalankan kode sampel, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah dikonfigurasi. 
$provider = new EnvironmentVariableCredentialsProvider();
// Tentukan titik akhir wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur titik akhir ke https://oss-cn-hangzhou.aliyuncs.com. 
$endpoint = "yourEndpoint";
// Tentukan nama bucket. Contoh: examplebucket. 
$bucket= "examplebucket";
// Tentukan jalur lengkap objek. Contoh: exampledir/exampleobject.txt. Jangan sertakan nama bucket di jalur lengkap. 
$object = "exampledir/exampleobject.txt";
// Tentukan jalur lengkap file lokal yang ingin Anda unggah. Contoh: D:\\localpath\\examplefile.txt. Secara default, jika Anda tidak menentukan jalur file lokal, file akan diunggah dari jalur proyek tempat program sampel berada. 
$uploadFile = "D:\\localpath\\examplefile.txt";

/**
* Langkah 1: Memulai tugas unggah multi-bagian dan dapatkan ID unggahan. 
*/
try{
  $config = array(
        "provider" => $provider,
        "endpoint" => $endpoint,
        "signatureVersion" => OssClient::OSS_SIGNATURE_VERSION_V4,
        "region"=> "cn-hangzhou"
    );
    $ossClient = new OssClient($config);

  // Dapatkan ID unggahan. ID unggahan adalah pengidentifikasi unik untuk tugas unggah multi-bagian. Anda dapat menggunakan ID unggahan untuk melakukan operasi terkait seperti membatalkan atau membuat kueri tugas unggah multi-bagian. 
  $uploadId = $ossClient->initiateMultipartUpload($bucket, $object);
} catch(OssException $e) {
  printf(__FUNCTION__ . ": initiateMultipartUpload FAILED\n");
  printf($e->getMessage() . "\n");
  return;
}
print(__FUNCTION__ . ": initiateMultipartUpload OK" . "\n");
/*
* Langkah 2: Unggah bagian. 
*/
$partSize = 10 * 1024 * 1024;
$uploadFileSize = filesize($uploadFile);
$pieces = $ossClient->generateMultiuploadParts($uploadFileSize, $partSize);
$responseUploadPart = array();
$uploadPosition = 0;
$isCheckMd5 = true;
foreach ($pieces as $i => $piece) {
  $fromPos = $uploadPosition + (integer)$piece[$ossClient::OSS_SEEK_TO];
  $toPos = (integer)$piece[$ossClient::OSS_LENGTH] + $fromPos - 1;
  $upOptions = array(
    // Unggah objek. 
    $ossClient::OSS_FILE_UPLOAD => $uploadFile,
    // Tentukan nomor bagian. 
    $ossClient::OSS_PART_NUM => ($i + 1),
    // Tentukan posisi tempat tugas unggah multi-bagian dimulai. 
    $ossClient::OSS_SEEK_TO => $fromPos,
    // Tentukan panjang objek. 
    $ossClient::OSS_LENGTH => $toPos - $fromPos + 1,
    // Tentukan apakah akan mengaktifkan verifikasi MD5. Nilai true menunjukkan bahwa verifikasi MD5 diaktifkan. 
    $ossClient::OSS_CHECK_MD5 => $isCheckMd5,
    // Atur batas bandwidth ke 100 KB/s, yang sama dengan 819.200 bit/s. 
    $options = array(
      OssClient::OSS_HEADERS => array(
        OssClient::OSS_TRAFFIC_LIMIT => 819200,
      ))

  );
  // Aktifkan verifikasi MD5. 
  if ($isCheckMd5) {
    $contentMd5 = OssUtil::getMd5SumForFile($uploadFile, $fromPos, $toPos);
    $upOptions[$ossClient::OSS_CONTENT_MD5] = $contentMd5;
  }
  try {
    // Unggah bagian. 
    $responseUploadPart[] = $ossClient->uploadPart($bucket, $object, $uploadId, $upOptions);
  } catch(OssException $e) {
    printf(__FUNCTION__ . ": initiateMultipartUpload, uploadPart - part#{$i} FAILED\n");
    printf($e->getMessage() . "\n");
    return;
  }
  printf(__FUNCTION__ . ": initiateMultipartUpload, uploadPart - part#{$i} OK\n");
}
// Parameter $uploadParts adalah array yang terdiri dari parameter ETag dan PartNumber dari setiap bagian. 
$uploadParts = array();
foreach ($responseUploadPart as $i => $eTag) {
  $uploadParts[] = array(
    'PartNumber' => ($i + 1),
    'ETag' => $eTag,
  );
}
/**
* Langkah 3: Selesaikan tugas unggah multi-bagian. 
*/
try {
  // Semua nilai yang valid dari parameter $uploadParts diperlukan untuk operasi CompleteMultipartUpload. Setelah OSS menerima nilai parameter $uploadParts, OSS akan memverifikasi semua bagian satu per satu. Setelah verifikasi semua bagian selesai, OSS akan menggabungkan bagian-bagian ini menjadi objek yang lengkap. 
  $ossClient->completeMultipartUpload($bucket, $object, $uploadId, $uploadParts);
  }  catch(OssException $e) {
  printf(__FUNCTION__ . ": completeMultipartUpload FAILED\n");
  printf($e->getMessage() . "\n");
  return;
  }
  printf(__FUNCTION__ . ": completeMultipartUpload OK\n");
# -*- coding: utf-8 -*-
import os
from oss2 import SizedFileAdapter, determine_part_size
from oss2.headers import OSS_TRAFFIC_LIMIT
from oss2.models import PartInfo
import oss2
from oss2.credentials import EnvironmentVariableCredentialsProvider

# Dapatkan kredensial akses dari variabel lingkungan. Sebelum menjalankan kode contoh ini, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah dikonfigurasi.
auth = oss2.ProviderAuthV4(EnvironmentVariableCredentialsProvider())

# Tentukan endpoint wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur endpoint ke https://oss-cn-hangzhou.aliyuncs.com.
endpoint = "https://oss-cn-hangzhou.aliyuncs.com"
# Tentukan ID wilayah yang sesuai dengan endpoint tersebut. Contoh: cn-hangzhou. Parameter ini diperlukan jika Anda menggunakan algoritma signature V4.
region = "cn-hangzhou"

# Tentukan nama bucket.
bucket = oss2.Bucket(auth, endpoint, "examplebucket", region=region)

# Tentukan path lengkap objek. Path lengkap objek tidak boleh mengandung nama bucket. Contoh: exampledir/exampleobject.txt.
key = 'exampledir/exampleobject.txt'
# Tentukan path lengkap file lokal yang ingin Anda unggah. Contoh: D:\\localpath\\examplefile.txt.
filename = 'D:\\localpath\\examplefile.txt'

total_size = os.path.getsize(filename)
# Gunakan metode determine_part_size untuk menentukan ukuran bagian.
part_size = determine_part_size(total_size, preferred_size=100 * 1024)

# Mulai tugas unggah multi-bagian.
upload_id = bucket.init_multipart_upload(key).upload_id
parts = []

# Konfigurasikan parameter headers untuk mengatur batas bandwidth menjadi 100 KB/detik, yang setara dengan 819.200 bit/detik.
limit_speed = (100 * 1024 * 8)
headers = dict()
headers[OSS_TRAFFIC_LIMIT] = str(limit_speed)

# Unggah bagian-bagian tersebut satu per satu.
with open(filename, 'rb') as fileobj:
    part_number = 1
    offset = 0
    while offset < total_size:
        num_to_upload = min(part_size, total_size - offset)
        # Panggil metode SizedFileAdapter(fileobj, size) untuk menghasilkan objek baru dan menghitung ulang posisi awal operasi append.
        result = bucket.upload_part(key, upload_id, part_number,
                                    SizedFileAdapter(fileobj, num_to_upload), headers=headers)
        parts.append(PartInfo(part_number, result.etag))

        offset += num_to_upload
        part_number += 1

# Selesaikan tugas unggah multi-bagian.
# Kode berikut memberikan contoh cara mengonfigurasi headers saat menyelesaikan tugas unggah multi-bagian:
headers = dict()
# Tentukan daftar kontrol akses (ACL) objek. Pada contoh ini, parameter ini diatur ke OBJECT_ACL_PRIVATE, yang menunjukkan bahwa ACL objek bersifat privat.
# headers["x-oss-object-acl"] = oss2.OBJECT_ACL_PRIVATE
bucket.complete_multipart_upload(key, upload_id, parts, headers=headers)
# bucket.complete_multipart_upload(key, upload_id, parts)

# Verifikasi hasil tugas unggah multi-bagian.
with open(filename, 'rb') as fileobj:
    assert bucket.get_object(key).read() == fileobj.read()
package main

import (
	"io"
	"log"
	"os"

	"github.com/aliyun/aliyun-oss-go-sdk/oss"
)

func main() {
	// Peroleh kredensial akses dari variabel lingkungan. Sebelum menjalankan kode contoh, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah dikonfigurasi. 
	provider, err := oss.NewEnvironmentVariableCredentialsProvider()
	if err != nil {
		log.Fatalf("Failed to create credentials provider: %v", err)
	}

	// Buat instans OSSClient. 
	// Tentukan endpoint wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur endpoint menjadi https://oss-cn-hangzhou.aliyuncs.com. Tentukan endpoint aktual Anda. 
	// Tentukan wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur wilayah menjadi cn-hangzhou. Tentukan wilayah aktual.
	options := []oss.ClientOption{oss.SetCredentialsProvider(&provider)}
	options = append(options, oss.Region("yourRegion"))
	// Tentukan versi algoritma tanda tangan.
	options = append(options, oss.AuthVersion(oss.AuthV4))
	client, err := oss.New("yourEndpoint", "", "", options...)
	if err != nil {
		log.Fatalf("Failed to create OSS client: %v", err)
	}

	// Tentukan nama bucket. Contoh: examplebucket. 
	bucketName := "examplebucket"
	bucket, err := client.Bucket(bucketName)
	if err != nil {
		log.Fatalf("Failed to get bucket '%s': %v", bucketName, err)
	}

	// Tentukan batas bandwidth untuk unggah. Nilai parameter harus berupa angka. Satuan default: bit/s. Dalam contoh ini, batas bandwidth diatur menjadi 5 MB/s. 
	traffic := int64(41943040)

	// Unggah objek besar menggunakan unggah multi-bagian. 
	// Anda dapat membagi objek menjadi beberapa bagian berdasarkan ukuran objek. Dalam contoh ini, objek dibagi menjadi tiga bagian. 
	localFilePath := "localFile"
	chunks, err := oss.SplitFileByPartNum(localFilePath, 3)
	if err != nil {
		log.Fatalf("Failed to split file '%s': %v", localFilePath, err)
	}

	// Buka objek. 
	fd, err := os.Open(localFilePath)
	if err != nil {
		log.Fatalf("Failed to open local file '%s': %v", localFilePath, err)
	}
	defer fd.Close()

	// Mulai tugas unggah multi-bagian untuk objek. 
	objectName := "exampledir/exampleobject.txt"
	imur, err := bucket.InitiateMultipartUpload(objectName)
	if err != nil {
		log.Fatalf("Failed to initiate multipart upload for '%s': %v", objectName, err)
	}

	// Unggah bagian dan konfigurasikan pembatasan bandwidth. 
	var parts []oss.UploadPart
	for _, chunk := range chunks {
		_, err := fd.Seek(chunk.Offset, io.SeekStart)
		if err != nil {
			log.Fatalf("Failed to seek to offset %d in file '%s': %v", chunk.Offset, localFilePath, err)
		}
		part, err := bucket.UploadPart(imur, fd, chunk.Size, chunk.Number, oss.TrafficLimitHeader(traffic))
		if err != nil {
			log.Fatalf("Failed to upload part %d of '%s': %v", chunk.Number, objectName, err)
		}
		parts = append(parts, part)
	}

	// Selesaikan unggah. 
	_, err = bucket.CompleteMultipartUpload(imur, parts)
	if err != nil {
		log.Fatalf("Failed to complete multipart upload for '%s': %v", objectName, err)
	}

	log.Println("Multipart upload completed successfully")
}

Pembatasan bandwidth menggunakan URL file

Untuk file dengan izin baca-publik atau baca-tulis publik, Anda dapat menambahkan parameter pembatasan x-oss-traffic-limit=<value> ke URL file untuk membatasi akses. Sebagai contoh, URL https://examplebucket.oss-cn-hangzhou.aliyuncs.com/video.mp4?x-oss-traffic-limit=819200 menentukan bahwa kecepatan unduh untuk file video.mp4 dibatasi menjadi 100 KB/s. Contoh berikut menunjukkan efek pembatasan:

Kecepatan unduh aktual adalah 96,0 KB/s, mendekati ambang batas pembatasan yang dikonfigurasi sebesar 100 KB/s. Ukuran total file adalah 29,9 MB, dengan 2,3 MB telah diunduh dan tersisa sekitar 5 menit.

Pembatasan bandwidth menggunakan URL yang ditandatangani

Saat Anda menggunakan SDK untuk menghasilkan URL yang ditandatangani guna mengakses file privat, Anda harus menyertakan parameter pembatasan dalam perhitungan tanda tangan. Kode berikut menyajikan contoh cara menambahkan parameter pembatasan ke URL yang ditandatangani menggunakan SDK umum. Untuk contoh kode yang menggunakan SDK lainnya, lihat Ikhtisar SDK.

import com.aliyun.oss.*;
import com.aliyun.oss.common.auth.*;
import com.aliyun.oss.common.comm.SignVersion;
import com.aliyun.oss.model.GeneratePresignedUrlRequest;
import com.aliyun.oss.model.GetObjectRequest;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
import java.net.URL;
import java.util.Date;

public class Demo {
    public static void main(String[] args) throws Throwable {
        // Dalam contoh ini, titik akhir wilayah China (Hangzhou) digunakan. Tentukan titik akhir aktual Anda. 
        String endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
        // Dapatkan kredensial akses dari variabel lingkungan. Sebelum Anda menjalankan kode sampel, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah dikonfigurasi. 
        EnvironmentVariableCredentialsProvider credentialsProvider = CredentialsProviderFactory.newEnvironmentVariableCredentialsProvider();
        // Tentukan nama bucket. Contoh: examplebucket. 
        String bucketName = "examplebucket";
        // Tentukan path lengkap objek. Jangan sertakan nama bucket dalam path lengkap. Contoh: exampledir/exampleobject.txt. 
        String objectName = "exampledir/exampleobject.txt";

        // Tentukan path lengkap file lokal yang ingin Anda unggah. Contoh: D:\\localpath\\examplefile.txt. 
        // Jika Anda tidak menentukan path file lokal, file lokal diunggah dari path proyek program sampel. 
        String localFileName = "D:\\localpath\\examplefile.txt";

        // Tentukan path lengkap tujuan Anda mengunduh objek. Jika file dengan nama yang sama sudah ada, objek yang diunduh akan menimpa file tersebut. Jika tidak, objek yang diunduh akan disimpan di path tersebut. 
        // Jika Anda tidak menentukan path untuk objek yang diunduh, objek yang diunduh akan disimpan ke path proyek program sampel. 
        String downLoadFileName = "D:\\localpath\\exampleobject.txt";

        // Atur batas bandwidth ke 100 KB/s. 
        int limitSpeed = 100 * 1024 * 8;
        // Tentukan wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur wilayah ke cn-hangzhou. 
        String region = "cn-hangzhou";

        // Buat instans Klien OSS. 
        // Panggil metode shutdown untuk melepaskan sumber daya terkait saat Klien OSS tidak lagi digunakan.
        ClientBuilderConfiguration clientBuilderConfiguration = new ClientBuilderConfiguration();
        clientBuilderConfiguration.setSignatureVersion(SignVersion.V4);        
        OSS ossClient = OSSClientBuilder.create()
        .endpoint(endpoint)
        .credentialsProvider(credentialsProvider)
        .clientConfiguration(clientBuilderConfiguration)
        .region(region)               
        .build();

        try {
            // Buat URL yang ditandatangani yang menyertakan parameter pembatasan bandwidth untuk unggahan objek dan atur periode validitas URL ke 60 detik. 
            Date date = new Date();
            date.setTime(date.getTime() + 60 * 1000);
            GeneratePresignedUrlRequest request = new GeneratePresignedUrlRequest(bucketName, objectName, HttpMethod.PUT);
            request.setExpiration(date);
            request.setTrafficLimit(limitSpeed);
            URL signedUrl = ossClient.generatePresignedUrl(request);
            System.out.println("put object url" + signedUrl);

            // Konfigurasikan pembatasan bandwidth untuk unggahan objek. 
            InputStream inputStream = new FileInputStream(localFileName);
            ossClient.putObject(signedUrl, inputStream, -1, null, true);

            // Buat URL yang ditandatangani yang menyertakan parameter pembatasan bandwidth untuk unduhan objek dan atur periode validitas URL ke 60 detik. 
            date = new Date();
            date.setTime(date.getTime() + 60 * 1000);
            request = new GeneratePresignedUrlRequest(bucketName, objectName, HttpMethod.GET);
            request.setExpiration(date);
            request.setTrafficLimit(limitSpeed);
            signedUrl = ossClient.generatePresignedUrl(request);
            System.out.println("get object url" + signedUrl);

            // Konfigurasikan pembatasan bandwidth untuk unduhan objek. 
            GetObjectRequest getObjectRequest =  new GetObjectRequest(signedUrl, null);
            ossClient.getObject(getObjectRequest, new File(downLoadFileName));
        } catch (OSSException oe) {
            System.out.println("Caught an OSSException, which means your request made it to OSS, "
                    + "but was rejected with an error response for some reason.");
            System.out.println("Error Message:" + oe.getErrorMessage());
            System.out.println("Error Code:" + oe.getErrorCode());
            System.out.println("Request ID:" + oe.getRequestId());
            System.out.println("Host ID:" + oe.getHostId());
        } catch (ClientException ce) {
            System.out.println("Caught an ClientException, which means the client encountered "
                    + "a serious internal problem while trying to communicate with OSS, "
                    + "such as not being able to access the network.");
            System.out.println("Error Message:" + ce.getMessage());
        } finally {
            if (ossClient != null) {
                ossClient.shutdown();
            }
        }
    }
}
<?php
if (is_file(__DIR__ . '/../autoload.php')) {
    require_once __DIR__ . '/../autoload.php';
}
if (is_file(__DIR__ . '/../vendor/autoload.php')) {
    require_once __DIR__ . '/../vendor/autoload.php';
}
use OSS\Credentials\EnvironmentVariableCredentialsProvider;
use OSS\OssClient;
use OSS\Core\OssException;

// Dapatkan kredensial akses dari variabel lingkungan. Sebelum Anda menjalankan kode sampel, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah dikonfigurasi. 
$provider = new EnvironmentVariableCredentialsProvider();
// Tentukan titik akhir wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur titik akhir ke https://oss-cn-hangzhou.aliyuncs.com. 
$endpoint = "yourEndpoint";
// Tentukan nama bucket. Contoh: examplebucket. 
$bucket= "examplebucket";
// Tentukan jalur lengkap objek. Contoh: exampledir/exampleobject.txt. Jangan sertakan nama bucket dalam jalur lengkap. 
$object = "exampledir/exampleobject.txt";

$config = array(
        "provider" => $provider,
        "endpoint" => $endpoint,
        "signatureVersion" => OssClient::OSS_SIGNATURE_VERSION_V4,
        "region"=> "cn-hangzhou"
    );
    $ossClient = new OssClient($config);

// Atur batas bandwidth ke 100 KB/s, yang sama dengan 819.200 bit/s. 
$options = array(
        OssClient::OSS_TRAFFIC_LIMIT => 819200,
);

// Buat URL yang ditandatangani untuk pengunggahan objek dengan pembatasan bandwidth koneksi tunggal yang dikonfigurasi dan atur periode validitas URL selama 60 detik. 
$timeout = 60;
$signedUrl = $ossClient->signUrl($bucket, $object, $timeout, "PUT", $options);
print($signedUrl);

// Buat URL yang ditandatangani untuk pengunduhan objek dengan pembatasan bandwidth koneksi tunggal yang dikonfigurasi dan atur periode validitas URL selama 120 detik. 
$timeout = 120;
$signedUrl = $ossClient->signUrl($bucket, $object, $timeout, "GET", $options);
print($signedUrl);
# -*- coding: utf-8 -*-

import oss2
from oss2.credentials import EnvironmentVariableCredentialsProvider
from oss2.models import OSS_TRAFFIC_LIMIT

# Dapatkan kredensial akses dari variabel lingkungan. Sebelum Anda menjalankan kode sampel, pastikan bahwa variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah dikonfigurasi. 
auth = oss2.ProviderAuthV4(EnvironmentVariableCredentialsProvider())

# Tentukan titik akhir wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur titik akhir ke https://oss-cn-hangzhou.aliyuncs.com. 
endpoint = "https://oss-cn-hangzhou.aliyuncs.com"
# Tentukan ID wilayah yang memetakan ke titik akhir. Contoh: cn-hangzhou. Parameter ini wajib diisi jika Anda menggunakan algoritma tanda tangan V4.
region = "cn-hangzhou"

# Tentukan nama bucket. 
bucket = oss2.Bucket(auth, endpoint, "examplebucket", region=region)

# Tentukan jalur lengkap objek. Jangan sertakan nama bucket dalam jalur lengkap. Contoh: exampledir/exampleobject.txt. 
object_name = 'exampledir/exampleobject.txt'
# Tentukan jalur lengkap file lokal yang ingin Anda unggah. Contoh: D:\\localpath\\examplefile.txt. Secara default, jika Anda tidak menentukan jalur file lokal, file lokal akan diunggah dari jalur proyek tempat program sampel berada. 
local_file_name = 'D:\\localpath\\examplefile.txt'
# Tentukan jalur lokal tempat Anda ingin mengunduh objek. Jika file dengan nama yang sama sudah ada, objek yang diunduh akan menimpa file tersebut. Jika tidak ada file dengan nama yang sama, objek yang diunduh akan disimpan di jalur tersebut. 
# Jika Anda tidak menentukan jalur untuk objek yang diunduh, objek yang diunduh akan disimpan ke jalur proyek tempat program sampel berada. 
down_file_name = 'D:\\localpath\\exampleobject.txt'

# Konfigurasikan parameter params untuk mengatur batas bandwidth ke 100 KB/dtk, yang sama dengan 819.200 bit/dtk. 
limit_speed = (100 * 1024 * 8)
params = dict()
params[OSS_TRAFFIC_LIMIT] = str(limit_speed)

# Buat URL yang ditandatangani yang menyertakan parameter pembatasan bandwidth untuk unggahan objek dan atur periode validitas URL ke 60 detik. 
url = bucket.sign_url('PUT', object_name, 60, params=params)
print('put object url:', url)

# Konfigurasikan pembatasan bandwidth untuk unggahan objek. 
result = bucket.put_object_with_url_from_file(url, local_file_name)
print('http response status:', result.status)

# Buat URL yang ditandatangani yang menyertakan parameter pembatasan bandwidth untuk unduhan objek dan atur periode validitas URL ke 60 detik. 
url = bucket.sign_url('GET', object_name, 60, params=params)
print('get object url:', url)

# Konfigurasikan pembatasan bandwidth untuk unduhan objek. 
result = bucket.get_object_with_url_to_file(url, down_file_name)
print('http response status:', result.status)
package main

import (
	"log"
	"os"

	"github.com/aliyun/aliyun-oss-go-sdk/oss"
)

func main() {
	// Peroleh kredensial akses dari variabel lingkungan. Sebelum menjalankan kode contoh, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah dikonfigurasi. 
	provider, err := oss.NewEnvironmentVariableCredentialsProvider()
	if err != nil {
		log.Fatalf("Failed to create credentials provider: %v", err)
	}

	// Buat instans OSSClient. 
	// Tentukan endpoint wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur endpoint menjadi https://oss-cn-hangzhou.aliyuncs.com. Tentukan endpoint aktual Anda. 
	// Tentukan wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur wilayah menjadi cn-hangzhou. Tentukan wilayah aktual.
	clientOptions := []oss.ClientOption{oss.SetCredentialsProvider(&provider)}
	clientOptions = append(clientOptions, oss.Region("yourRegion"))
	// Tentukan versi algoritma tanda tangan.
	clientOptions = append(clientOptions, oss.AuthVersion(oss.AuthV4))
	client, err := oss.New("yourEndpoint", "", "", clientOptions...)
	if err != nil {
		log.Fatalf("Failed to create OSS client: %v", err)
	}

	// Tentukan nama bucket. Contoh: examplebucket. 
	bucketName := "examplebucket"
	bucket, err := client.Bucket(bucketName)
	if err != nil {
		log.Fatalf("Failed to get bucket '%s': %v", bucketName, err)
	}

	// Gunakan URL yang ditandatangani untuk mengunggah objek. 
	// Tentukan path lengkap file lokal yang akan diunggah. Contoh: D:\\localpath\\exampleobject.txt. 
	localFilePath := "D:\\localpath\\exampleobject.txt"
	fd, err := os.Open(localFilePath)
	if err != nil {
		log.Fatalf("Failed to open local file '%s': %v", localFilePath, err)
	}
	defer fd.Close()

	// Tentukan batas bandwidth untuk unggah. Nilai parameter harus berupa angka. Satuan default: bit/s. Dalam contoh ini, batas bandwidth diatur menjadi 5 MB/s. 
	traffic := int64(41943040)

	// Peroleh URL yang ditandatangani yang digunakan untuk mengunggah objek. 
	// Tentukan path lengkap objek. Jangan sertakan nama bucket dalam path lengkap. 
	objectName := "exampledir/exampleobject.txt"
	strURL, err := bucket.SignURL(objectName, oss.HTTPPut, 60, oss.TrafficLimitParam(traffic))
	if err != nil {
		log.Fatalf("Failed to generate signed URL for uploading '%s': %v", objectName, err)
	}

	// Unggah file lokal. 
	err = bucket.PutObjectWithURL(strURL, fd)
	if err != nil {
		log.Fatalf("Failed to upload object '%s': %v", objectName, err)
	}

	// Gunakan URL yang ditandatangani untuk mengunduh objek. 
	// Peroleh URL yang ditandatangani yang digunakan untuk mengunduh objek. 
	strURL, err = bucket.SignURL(objectName, oss.HTTPGet, 60, oss.TrafficLimitParam(traffic))
	if err != nil {
		log.Fatalf("Failed to generate signed URL for downloading '%s': %v", objectName, err)
	}

	// Tentukan path lengkap tujuan unduhan objek. 
	downloadFilePath := "D:\\localpath\\exampleobject.txt"
	err = bucket.GetObjectToFileWithURL(strURL, downloadFilePath)
	if err != nil {
		log.Fatalf("Failed to download object '%s' to '%s': %v", objectName, downloadFilePath, err)
	}

	log.Println("Upload and download completed successfully")
}
using System.Text;
using Aliyun.OSS;
using Aliyun.OSS.Common;

// Tentukan titik akhir wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur titik akhir ke https://oss-cn-hangzhou.aliyuncs.com. 
var endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
// Dapatkan kredensial akses dari variabel lingkungan. Sebelum Anda menjalankan kode sampel, pastikan bahwa variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah dikonfigurasi. 
var accessKeyId = Environment.GetEnvironmentVariable("OSS_ACCESS_KEY_ID");
var accessKeySecret = Environment.GetEnvironmentVariable("OSS_ACCESS_KEY_SECRET");
// Tentukan nama bucket. Contoh: examplebucket. 
var bucketName = "examplebucket";
// Tentukan jalur lengkap objek. Jangan sertakan nama bucket dalam jalur lengkap. Contoh: exampledir/exampleobject.txt. 
var objectName = "exampledir/exampleobject.txt";
var objectContent = "More than just cloud.";
var downloadFilename  = "D:\\localpath\\examplefile.txt";
// Tentukan wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur wilayah ke cn-hangzhou.
const string region = "cn-hangzhou";
            
// Buat instans ClientConfiguration dan ubah parameter sesuai kebutuhan.
 var conf = new ClientConfiguration();
            
// Gunakan algoritma tanda tangan V4.
conf.SignatureVersion = SignatureVersion.V4;
            
// Buat instans OSSClient.
var client = new OssClient(endpoint, accessKeyId, accessKeySecret, conf);
client.SetRegion(region);
try
{       
    // Buat URL yang ditandatangani untuk mengunggah objek. 
    var generatePresignedUriRequest = new GeneratePresignedUriRequest(bucketName, objectName, SignHttpMethod.Put)
    {
        Expiration = DateTime.Now.AddHours(1),
    };

    // Atur batas bandwidth ke 100 KB/s, yang sama dengan 819.200 bit/s. 
    generatePresignedUriRequest.AddQueryParam("x-oss-traffic-limit", "819200");

    var signedUrl = client.GeneratePresignedUri(generatePresignedUriRequest);
    // Gunakan URL yang ditandatangani untuk mengunggah objek. 
    var buffer = Encoding.UTF8.GetBytes(objectContent);
    using (var ms = new MemoryStream(buffer))
    {
        client.PutObject(signedUrl, ms);
    }
    Console.WriteLine("Put object by signatrue succeeded. {0} ", signedUrl.ToString());


    var metadata = client.GetObjectMetadata(bucketName, objectName);
    var etag = metadata.ETag;
    // Buat URL yang ditandatangani untuk mengunduh objek. 
    // Atur batas bandwidth ke 100 KB/s, yang sama dengan 819.200 bit/s. 
    var req = new GeneratePresignedUriRequest(bucketName, objectName, SignHttpMethod.Get);
    req.AddQueryParam("x-oss-traffic-limit", "819200");

    var uri = client.GeneratePresignedUri(req);
    // Gunakan URL yang ditandatangani untuk mengunduh objek. 
    OssObject ossObject = client.GetObject(uri);
    using (var file = File.Open(downloadFilename, FileMode.OpenOrCreate))
    {
        using (Stream stream = ossObject.Content)
        {
            int length = 4 * 1024;
            var buf = new byte[length];
            do
            {
                length = stream.Read(buf, 0, length);
                file.Write(buf, 0, length);
            } while (length != 0);
        }
    }
    Console.WriteLine("Get object by signatrue succeeded. {0} ", uri.ToString());
}
catch (Exception ex)
{
    Console.WriteLine("Put object failed, {0}", ex.Message);
}
#include <alibabacloud/oss/OssClient.h>
#include <fstream>
using namespace AlibabaCloud::OSS;
int main(void)
{
    /* Inisialisasi informasi akun OSS. */
    
    /* Atur yourEndpoint ke titik akhir wilayah tempat bucket berada. Misalnya, untuk wilayah China (Hangzhou), atur titik akhir ke https://oss-cn-hangzhou.aliyuncs.com. */
    std::string Endpoint = "yourEndpoint";
    /* Atur yourRegion ke wilayah tempat bucket berada. Misalnya, untuk wilayah China (Hangzhou), atur wilayah ke cn-hangzhou. */
    std::string Region = "yourRegion";
    /* Tentukan nama bucket, misalnya, examplebucket. */
    std::string BucketName = "examplebucket";
    /* Tentukan jalur lengkap objek. Jalur lengkap tidak boleh berisi nama bucket. Misalnya, exampledir/exampleobject.txt. */
    std::string ObjectName = "exampledir/exampleobject.txt"; 

    /* Inisialisasi sumber daya jaringan. */
    InitializeSdk();

    ClientConfiguration conf;
    conf.signatureVersion = SignatureVersionType::V4;
    /* Dapatkan kredensial akses dari variabel lingkungan. Sebelum Anda menjalankan kode sampel ini, pastikan bahwa variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah diatur. */
    auto credentialsProvider = std::make_shared<EnvironmentVariableCredentialsProvider>();
    OssClient client(Endpoint, credentialsProvider, conf);
    client.SetRegion(Region);

    /* Atur periode validitas tanda tangan. Periode validitas maksimum adalah 32.400 detik. */
    std::time_t expires = std::time(nullptr) + 1200; 
    /* Buat URL untuk mengunggah file. */
    GeneratePresignedUrlRequest putrequest(BucketName, ObjectName, Http::Put);
    putrequest.setExpires(expires);
    /* Atur batas lebar pita unggah ke 100 KB/dtk. */
    putrequest.setTrafficLimit(819200);
    auto genOutcome = client.GeneratePresignedUrl(putrequest);
    std::shared_ptr<std::iostream> content = std::make_shared<std::stringstream>();
    *content << "test cpp sdk";
    /* Cetak hasil URL yang ditandatangani untuk unggahan. */
    std::cout << "Signed URL for upload: " << genOutcome.result() << std::endl;

    /* Gunakan URL yang ditandatangani untuk mengunggah file. */
    auto outcome = client.PutObjectByUrl(genOutcome.result(), content);
    /* Buat URL untuk mengunduh file. */
    GeneratePresignedUrlRequest getrequest(BucketName, ObjectName, Http::Get);
    getrequest.setExpires(expires);
    /* Atur batas bandwidth unduh ke 100 KB/dtk. */
    getrequest.setTrafficLimit(819200);
    genOutcome = client.GeneratePresignedUrl(getrequest);
    /* Cetak hasil URL yang ditandatangani untuk unduhan. */
    std::cout << "Signed URL for download: " << genOutcome.result() << std::endl;
    /* Gunakan URL yang ditandatangani untuk mengunduh file. */
    auto goutcome = client.GetObjectByUrl(genOutcome.result());
    
    /* Lepaskan sumber daya jaringan. */
    ShutdownSdk();
    return 0;
}