Saat menggunakan unggah yang dapat dilanjutkan untuk mengunggah file ke Object Storage Service (OSS), Anda dapat menentukan file checkpoint. Jika proses unggah terganggu oleh error jaringan atau crash program, proses tersebut akan dilanjutkan dari posisi yang terekam dalam file checkpoint.
Selama proses unggah, informasi progres direkam dalam file checkpoint. Jika suatu bagian gagal diunggah, percobaan berikutnya akan dilanjutkan dari titik pemeriksaan yang terekam dalam file tersebut. Setelah unggah selesai, file checkpoint akan dihapus.
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 ingin membuat instans OSSClient menggunakan nama domain kustom atau Security Token Service (STS), lihat Inisialisasi.
Untuk melakukan unggah yang dapat dilanjutkan, Anda harus memiliki izin
oss:PutObject. Untuk informasi selengkapnya, lihat Melampirkan kebijakan kustom ke RAM user.
Kode contoh
Kode berikut menunjukkan contoh cara melakukan unggah yang dapat dilanjutkan.
using Aliyun.OSS;
using Aliyun.OSS.Common;
// Tetapkan yourEndpoint ke titik akhir wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), tetapkan 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 ditetapkan.
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. Path lengkap tidak boleh mengandung nama bucket. Contoh: exampledir/exampleobject.txt.
var objectName = "exampledir/exampleobject.txt";
// Tentukan path lengkap file lokal. Contoh: D:\\localpath\\examplefile.txt.
// Jika Anda hanya menentukan nama file (misalnya, examplefile.txt) tanpa path lengkap, file akan diunggah dari path lokal yang sesuai dengan proyek program contoh.
var localFilename = "D:\\localpath\\examplefile.txt";
// Direktori untuk menyimpan file checkpoint. Progres unggah disimpan dalam file ini.
string checkpointDir = "yourCheckpointDir";
// Tentukan wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), tetapkan wilayah ke cn-hangzhou.
const string region = "cn-hangzhou";
// Buat instans ClientConfiguration dan ubah parameter default sesuai kebutuhan.
var conf = new ClientConfiguration();
// Gunakan Signature V4.
conf.SignatureVersion = SignatureVersion.V4;
// Buat instans OssClient.
var client = new OssClient(endpoint, accessKeyId, accessKeySecret, conf);
client.SetRegion(region);
try
{
// Tetapkan beberapa parameter menggunakan UploadObjectRequest.
UploadObjectRequest request = new UploadObjectRequest(bucketName, objectName, localFilename)
{
// Tentukan ukuran setiap bagian.
PartSize = 8 * 1024 * 1024,
// Tentukan jumlah thread konkuren.
ParallelThreadCount = 3,
// Parameter checkpointDir menentukan direktori yang menyimpan status antara dari unggah yang dapat dilanjutkan. Hal ini memungkinkan unggah dilanjutkan setelah terjadi kegagalan.
// Jika checkpointDir diatur ke null, fitur unggah yang dapat dilanjutkan dinonaktifkan. Setelah terjadi kegagalan, seluruh file akan diunggah ulang.
CheckpointDir = checkpointDir,
};
// Lakukan unggah yang dapat dilanjutkan.
client.ResumableUploadObject(request);
Console.WriteLine("Unggah yang dapat dilanjutkan objek:{0} berhasil", objectName);
}
catch (OssException ex)
{
Console.WriteLine("Gagal dengan kode kesalahan: {0}; Informasi error: {1}. \nRequestID:{2}\tHostID:{3}",
ex.ErrorCode, ex.Message, ex.RequestId, ex.HostId);
}
catch (Exception ex)
{
Console.WriteLine("Gagal dengan informasi error: {0}", ex.Message);
}Referensi
Untuk kode contoh lengkap mengenai unggah yang dapat dilanjutkan, lihat contoh di GitHub.