Anda dapat menggunakan unduhan rentang untuk mengunduh bagian tertentu dari suatu objek.
Catatan penggunaan
Topik ini menggunakan titik akhir publik wilayah China (Hangzhou). Jika Anda mengakses OSS dari layanan Alibaba Cloud lain yang berada di wilayah yang sama dengan OSS, gunakan titik akhir internal. Untuk informasi selengkapnya mengenai wilayah dan titik akhir OSS, lihat Wilayah dan titik akhir.
Pada topik ini, instans OSSClient dibuat menggunakan titik akhir OSS. Jika Anda ingin membuat instans OSSClient dengan nama domain kustom atau Security Token Service (STS), lihat Inisialisasi.
Untuk melakukan unduhan rentang, Anda harus memiliki izin
oss:GetObject. Untuk informasi selengkapnya, lihat Berikan izin kustom kepada RAM user.
Kode contoh
Kode berikut menunjukkan cara mengunduh bagian tertentu dari suatu objek.
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 = "yourEndpoint";
// Dapatkan kredensial akses dari variabel lingkungan. Sebelum menjalankan kode contoh, pastikan 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";
// Unduh objek ke D:\\localpath. Setelah objek diunduh, file lokal diberi nama examplefile.txt. Jika file dengan nama yang sama sudah ada, objek yang diunduh akan menimpa file tersebut. Jika tidak, objek yang diunduh disimpan di path tersebut.
// Jika Anda tidak menentukan path untuk objek yang diunduh, objek tersebut akan disimpan di path proyek tempat program contoh berada.
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 default sesuai kebutuhan Anda.
var conf = new ClientConfiguration();
// Gunakan algoritma signature V4.
conf.SignatureVersion = SignatureVersion.V4;
// Buat instans OssClient.
var client = new OssClient(endpoint, accessKeyId, accessKeySecret, conf);
client.SetRegion(region);
try
{
var getObjectRequest = new GetObjectRequest(bucketName, objectName);
// Atur rentang dari byte 20 hingga byte 100.
getObjectRequest.SetRange(20, 100);
// Mulai unduhan rentang. Anda dapat menggunakan setRange dalam getObjectRequest untuk melakukan unduhan rentang dan unduhan yang dapat dilanjutkan.
var obj = client.GetObject(getObjectRequest);
// Unduh data dan tulis data ke file.
using (var requestStream = obj.Content)
{
byte[] buf = new byte[1024];
var fs = File.Open(downloadFilename, FileMode.OpenOrCreate);
var len = 0;
while ((len = requestStream.Read(buf, 0, 1024)) != 0)
{
fs.Write(buf, 0, len);
}
fs.Close();
}
Console.WriteLine("Get object succeeded");
}
catch (Exception ex)
{
Console.WriteLine("Get object failed. {0}", ex.Message);
}Tabel berikut menjelaskan parameter yang dapat dikonfigurasi pada GetObjectRequest.
Parameter | Deskripsi |
Range | Anda dapat menentukan cakupan transfer file. |
ModifiedSinceConstraint | Kondisi pengunduhan objek. Jika waktu yang ditentukan lebih awal daripada waktu modifikasi aktual objek, objek dapat diunduh. Jika tidak, kode status HTTP 304 Not Modified dikembalikan. |
UnmodifiedSinceConstraint | Kondisi pengunduhan objek. Jika waktu yang ditentukan sama dengan atau lebih baru daripada waktu modifikasi aktual objek, objek dapat diunduh. Jika tidak, kode status HTTP 412 precondition failed dikembalikan. |
MatchingETagConstraints | Kondisi pengunduhan objek. Jika ETag yang ditentukan sesuai dengan ETag objek, objek dapat diunduh. Jika tidak, kode status HTTP 412 precondition failed dikembalikan. |
NonmatchingEtagConstraints | Kondisi pengunduhan objek. Jika ETag yang ditentukan tidak sesuai dengan ETag objek, objek dapat diunduh. Jika tidak, kode status HTTP 304 Not Modified dikembalikan. |
ResponseHeaderOverrides | Header yang ingin Anda kembalikan dalam respons. |