Anda dapat memanggil operasi UploadPartCopy dengan menambahkan header permintaan x-oss-copy-source ke permintaan UploadPart. Operasi ini menyalin data dari objek yang ada untuk diunggah sebagai bagian.
Catatan penggunaan
Gunakan UploadPartCopy untuk menyalin file berukuran lebih dari 1 GB. Untuk menyalin file berukuran kurang dari 1 GB dalam satu operasi, lihat CopyObject.
Perhatikan hal-hal berikut saat menggunakan operasi UploadPartCopy:
Bucket sumber dan bucket tujuan untuk operasi UploadPartCopy harus berada di wilayah yang sama.
Sebelum memanggil operasi ini untuk mengunggah suatu bagian, Anda harus terlebih dahulu memanggil operasi InitiateMultipartUpload untuk mendapatkan ID unggah yang dikeluarkan oleh OSS.
Jika Anda menentukan header permintaan x-oss-server-side-encryption saat memanggil operasi InitiateMultipartUpload, bagian yang diunggah akan dienkripsi. Header x-oss-server-side-encryption dikembalikan dalam respons terhadap operasi UploadPart. Nilai header ini menunjukkan algoritma enkripsi sisi server yang digunakan untuk bagian tersebut. Untuk informasi selengkapnya, lihat InitiateMultipartUpload.
Untuk unggah multi-bagian, semua bagian kecuali bagian terakhir harus berukuran lebih dari 100 KB. Operasi UploadPart tidak langsung memeriksa ukuran bagian yang diunggah karena tidak dapat menentukan apakah itu bagian terakhir. Pemeriksaan ukuran hanya dilakukan saat operasi CompleteMultipartUpload dipanggil.
Izin
Secara default, Akun Alibaba Cloud memiliki izin penuh. Pengguna RAM atau Peran RAM di bawah Akun Alibaba Cloud tidak memiliki izin apa pun secara default. Akun Alibaba Cloud atau administrator akun harus memberikan izin operasi melalui RAM Policy atau Bucket policies.
API | Action | Definisi |
UploadPartCopy |
| Membaca data dalam objek sumber saat Anda mengunggah bagian dengan menyalin data dari objek yang ada. |
| Menulis data ke objek tujuan saat Anda mengunggah bagian dengan menyalin data dari objek yang ada. | |
| Saat mengunggah bagian dengan menyalin data dari objek yang ada, jika Anda menentukan versi objek melalui versionId, izin ini diperlukan untuk membaca versi tertentu dari objek sumber. |
Versi
Secara default, operasi UploadPartCopy menyalin data dari versi terkini objek yang ada untuk diunggah sebagai bagian. Anda dapat menyalin data dari versi tertentu objek dengan menyertakan sub-resource versionId dalam header permintaan x-oss-copy-source. Contohnya: x-oss-copy-source: /SourceBucketName/SourceObjectName?versionId=111111.
SourceObjectName harus di-URL-encoded. Respons akan mengembalikan versionId objek yang disalin dalam header x-oss-copy-source-version-id.
Jika Anda tidak menentukan versionId dan versi terkini objek yang akan disalin adalah penanda hapus (delete marker), OSS akan mengembalikan error 404 Not Found. Jika Anda menentukan versionId untuk menyalin penanda hapus, OSS akan mengembalikan error 400 Bad Request.
Pengukuran dan penagihan
Saat Anda memanggil operasi UploadPartCopy, jika objek sumber merupakan objek Akses Jarang (IA), biaya pengambilan data untuk objek IA akan dikenakan. Jika objek sumber merupakan objek Arsip yang belum dipulihkan menggunakan operasi RestoreObject dan akses waktu nyata untuk objek Arsip diaktifkan pada bucket tersebut, biaya pengambilan data untuk akses waktu nyata objek Arsip akan dikenakan saat Anda mengakses objek tersebut. Biaya tersebut dibebankan ke bucket sumber. Untuk informasi selengkapnya tentang penagihan, lihat Biaya pemrosesan data.
Sintaksis permintaan
PUT /ObjectName?partNumber=PartNumber&uploadId=UploadId HTTP/1.1
Host: BucketName.oss-cn-hangzhou.aliyuncs.com
Date: GMT Date
Content-Length: Size
Authorization: SignatureValue
x-oss-copy-source: /SourceBucketName/SourceObjectName
x-oss-copy-source-range: bytes=first-lastHeader permintaan
Selain header permintaan umum, permintaan UploadPartCopy menggunakan header permintaan berikut untuk menentukan objek sumber dan rentang salinan.
Nama | Tipe | Deskripsi |
x-oss-copy-source | String | Objek sumber yang akan disalin. Anda harus memiliki izin baca pada objek ini. Nilai default: Tidak ada |
x-oss-copy-source-range | String | Rentang objek sumber yang akan disalin. Misalnya, jika Anda mengatur header ini menjadi bytes=0-9, 10 byte pertama objek akan disalin. Nilai default: Tidak ada
|
Header permintaan berikut berlaku untuk objek sumber yang ditentukan oleh x-oss-copy-source.
Nama | Tipe | Deskripsi |
x-oss-copy-source-if-match | String | Operasi salin hanya dilakukan jika ETag objek sumber sesuai dengan ETag yang ditentukan. Jika tidak, error 412 Precondition Failed dikembalikan. Nilai default: Tidak ada |
x-oss-copy-source-if-none-match | String | Jika nilai ETag yang diberikan tidak sesuai dengan ETag objek, file akan ditransfer dan respons Nilai default: Tidak ada |
x-oss-copy-source-if-unmodified-since | String | File disalin dan respons 200 OK dikembalikan hanya jika waktu yang ditentukan dalam header ini sama dengan atau lebih baru daripada waktu modifikasi aktual file. Jika tidak, error 412 Precondition Failed dikembalikan. Nilai default: Tidak ada |
x-oss-copy-source-if-modified-since | String | File disalin dan respons 200 OK dikembalikan hanya jika waktu yang ditentukan lebih awal daripada waktu modifikasi aktual file. Jika tidak, respons 304 Not Modified dikembalikan. Nilai default: Tidak ada Format: GMT. Contoh: Fri, 13 Nov 2015 14:47:53 GMT |
Contoh
Contoh permintaan
PUT /multipart.data?partNumber=1&uploadId=0004B9895DBBB6EC98E36 HTTP/1.1 Host: oss-example.oss-cn-hangzhou.aliyuncs.com Content-Length: 6291456 Date: Wed, 22 Feb 2012 08:32:21 GMT Authorization: OSS4-HMAC-SHA256 Credential=LTAI********************/20250417/cn-hangzhou/oss/aliyun_v4_request,AdditionalHeaders=content-length,Signature=a7c3554c729d71929e0b84489addee6b2e8d5cb48595adfc51868c299c0c218e x-oss-copy-source: /oss-example/src-object x-oss-copy-source-range: bytes=100-6291756Contoh respons
HTTP/1.1 200 OK Server: AliyunOSS Connection: keep-alive x-oss-request-id: 3e6aba62-1eae-d246-6118-8ff42cd0**** Date: Thu, 17 Jul 2014 06:27:54 GMT <?xml version="1.0" encoding="UTF-8"?> <CopyPartResult xmlns=”http://doc.oss-cn-hangzhou.aliyuncs.com”> <LastModified>2014-07-17T06:27:54.000Z </LastModified> <ETag>"5B3C1A2E053D763E1B002CC607C5****"</ETag> </CopyPartResult>Contoh permintaan dengan versionId yang ditentukan
PUT /multipart.data?partNumber=2&uploadId=63C06A5CFF6F4AE4A6BB3AD7F01C**** HTTP/1.1 Host: oss-example.oss-cn-hangzhou.aliyuncs.com Date: Tue, 09 Apr 2019 07:01:56 GMT Authorization: OSS4-HMAC-SHA256 Credential=LTAI********************/20250417/cn-hangzhou/oss/aliyun_v4_request,Signature=a7c3554c729d71929e0b84489addee6b2e8d5cb48595adfc51868c299c0c218e x-oss-copy-source: /oss-example/src-object?versionId=CAEQMxiBgMC0vs6D0BYiIGJiZWRjOTRjNTg0NzQ1MTRiN2Y1OTYxMTdkYjQ0****Contoh respons
HTTP/1.1 200 OK Server: AliyunOSS Connection: keep-alive x-oss-copy-source-version-id: CAEQMxiBgMC0vs6D0BYiIGJiZWRjOTRjNTg0NzQ1MTRiN2Y1OTYxMTdkYjQ0**** x-oss-request-id: 5CAC4364B7AEADE017000660 Date: Tue, 09 Apr 2019 07:01:56 GMT <?xml version="1.0" encoding="UTF-8"?> <CopyPartResult> <LastModified>2019-04-09T07:01:56.000Z</LastModified> <ETag>"25A9F4ABFCC05743DF6E2C886C56****"</ETag> </CopyPartResult>
SDK
Antarmuka baris perintah ossutil
Untuk perintah ossutil yang sesuai dengan operasi UploadPartCopy, lihat upload-part-copy.
Kode error
Kode error | Kode status HTTP | Deskripsi |
OperationNotSupported | 400 | Operasi UploadPartCopy dipanggil untuk bucket dengan kelas penyimpanan Archive. |