Menyelesaikan tugas unggah multi-bagian suatu objek setelah semua bagian objek tersebut diunggah.
Catatan
Saat memanggil operasi CompleteMultipartUpload, Anda harus menyediakan daftar lengkap semua bagian yang valid, termasuk nomor bagian dan entity tag (ETag) masing-masing bagian. Setelah menerima daftar tersebut, Object Storage Service (OSS) memverifikasi validitas setiap bagian satu per satu. Jika semua bagian valid, OSS menggabungkannya menjadi satu objek utuh.
Konfirmasi ukuran setiap bagian
Saat memanggil operasi CompleteMultipartUpload, OSS memeriksa apakah setiap bagian—kecuali bagian terakhir—berukuran minimal 100 KB, serta memverifikasi nomor bagian dan ETag yang disediakan dalam daftar bagian. Oleh karena itu, saat mengunggah sebuah bagian, klien harus mencatat tidak hanya nomor bagian tetapi juga nilai ETag yang dikembalikan oleh server.
Penanganan permintaan
OSS mungkin memerlukan waktu tertentu untuk memproses permintaan CompleteMultipartUpload. Jika klien terputus dari OSS selama periode tersebut, OSS tetap melanjutkan pemrosesan permintaan.
PartNumber
OSS memverifikasi nilai PartNumber saat Anda memanggil operasi CompleteMultipartUpload.
Nilai PartNumber berkisar antara 1 hingga 10.000. Nomor bagian dalam permintaan tidak harus berurutan, tetapi harus diurutkan secara ascending. Misalnya, jika nomor bagian pertama adalah 1, nomor bagian kedua dapat berupa 5.
UploadId
Satu objek dapat diunggah melalui beberapa tugas unggah dengan upload ID independen. Setelah satu tugas unggah selesai, upload ID-nya menjadi tidak valid, tetapi upload ID dari tugas unggah lainnya tidak terpengaruh.
x-oss-server-side-encryption
Jika header x-oss-server-side-encryption ditentukan dalam permintaan InitiateMultipartUpload, header ini akan dikembalikan dalam tanggapan terhadap permintaan CompleteMultipartUpload. Nilai header tersebut menunjukkan metode enkripsi yang digunakan untuk objek di server OSS.
Pengendalian versi
Anda dapat memanggil operasi CompleteMultipartUpload untuk menyelesaikan tugas unggah multi-bagian suatu objek ketika pengendalian versi diaktifkan pada bucket tempat objek tersebut diunggah. Dalam hal ini, OSS menghasilkan ID versi unik untuk objek tersebut dan mengembalikannya sebagai header x-oss-version-id dalam tanggapan.
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 policies atau Bucket Policy.
|
API |
Action |
Description |
|
CompleteMultipartUpload |
|
Menggabungkan bagian-bagian menjadi satu objek. |
|
|
Saat menggabungkan bagian-bagian menjadi satu objek, jika Anda menentukan tag objek melalui x-oss-tagging, izin ini diperlukan. |
Sintaksis permintaan
POST /ObjectName?uploadId=UploadId HTTP/1.1
Host: BucketName.oss-cn-hangzhou.aliyuncs.com
Date: GMT Date
Content-Length: Size
Authorization: Signature
<CompleteMultipartUpload>
<Part>
<PartNumber>PartNumber</PartNumber>
<ETag>ETag</ETag>
</Part>
...
</CompleteMultipartUpload>Parameter permintaan
Anda dapat mengonfigurasi parameter encoding-type dalam permintaan CompleteMultipartUpload. OSS menggunakan jenis encoding yang ditentukan untuk mengencode nama objek dalam tanggapan.
Parameter | Type | Description |
encoding-type | String | Jenis encoding nama objek dalam tanggapan. Hanya URL encoding yang didukung. Nama objek dapat berisi karakter yang diencode dalam UTF-8. Namun, standar XML 1.0 tidak dapat digunakan untuk mengurai karakter kontrol, seperti karakter dengan nilai ASCII dari 0 hingga 10. Anda dapat mengonfigurasi parameter ini untuk mengencode nama objek dalam tanggapan. Secara default, header ini dibiarkan kosong. Nilai valid: url. |
Header permintaan
Header | Type | Required | Description |
x-oss-forbid-overwrite | String | No | Menentukan apakah objek dengan nama yang sama akan ditimpa saat Anda memanggil operasi CompleteMultipartUpload.
Catatan
|
x-oss-complete-all | String | No | Menentukan apakah akan mencantumkan semua bagian yang diunggah menggunakan upload ID saat ini. Nilai valid: yes.
|
Untuk informasi selengkapnya tentang header permintaan umum dalam permintaan CompleteMultipartUpload seperti Host dan Date, lihat Common HTTP headers.
Elemen permintaan
Element | Type | Description |
CompleteMultipartUpload | Container | Kontainer yang menyimpan konten permintaan CompleteMultipartUpload. Node anak: Part. Node induk: none. |
ETag | String | Nilai ETag yang dikembalikan oleh OSS setelah bagian-bagian diunggah. Node induk: Part. |
Part | Container | Kontainer yang menyimpan bagian-bagian yang diunggah. Node anak: ETag dan PartNumber. Node induk: CompleteMultipartUpload. |
PartNumber | Integer | Nomor bagian. Node induk: Part. |
Elemen tanggapan
Element | Type | Description |
Bucket | String | Nama bucket yang berisi objek yang ingin Anda pulihkan. Node induk: CompleteMultipartUploadResult. |
CompleteMultipartUploadResult | Container | Kontainer yang menyimpan hasil permintaan CompleteMultipartUpload. Node anak: Bucket, Key, ETag, dan Location. Node induk: none. |
ETag | String | ETag yang dihasilkan saat objek dibuat. ETag digunakan untuk mengidentifikasi konten objek. Jika objek dibuat dengan memanggil operasi CompleteMultipartUpload, nilai ETag bukanlah hash MD5 dari konten objek, melainkan nilai unik yang dihitung berdasarkan aturan tertentu. Catatan ETag objek dapat digunakan untuk memeriksa apakah konten objek dimodifikasi. Namun, kami menyarankan Anda menggunakan hash MD5 objek daripada nilai ETag objek untuk memverifikasi integritas data. Node induk: CompleteMultipartUploadResult. |
Location | String | URL yang digunakan untuk mengakses objek yang diunggah. Node induk: CompleteMultipartUploadResult. |
Key | String | Nama objek yang diunggah. Node induk: CompleteMultipartUploadResult. |
EncodingType | String | Jenis encoding nama objek dalam tanggapan. Jika parameter ini ditentukan dalam permintaan, nama objek akan diencode dalam tanggapan. Node induk: Container. |
Contoh
Menyelesaikan tugas unggah multi-bagian suatu objek dalam bucket tanpa pengendalian versi
Permintaan contoh
POST /multipart.data?uploadId=0004B9B2D2F7815C432C9057C031****&encoding-type=url HTTP/1.1 Host: oss-example.oss-cn-hangzhou.aliyuncs.com Content-Length: 1056 Date: Fri, 24 Feb 2012 10:19:18 GMT Authorization: OSS4-HMAC-SHA256 Credential=LTAI********************/20250417/cn-hangzhou/oss/aliyun_v4_request,AdditionalHeaders=content-length,Signature=a7c3554c729d71929e0b84489addee6b2e8d5cb48595adfc51868c299c0c218e <CompleteMultipartUpload> <Part> <PartNumber>1</PartNumber> <ETag>"3349DC700140D7F86A0784842780****"</ETag> </Part> <Part> <PartNumber>5</PartNumber> <ETag>"8EFDA8BE206636A695359836FE0A****"</ETag> </Part> <Part> <PartNumber>8</PartNumber> <ETag>"8C315065167132444177411FDA14****"</ETag> </Part> </CompleteMultipartUpload>Tanggapan sukses contoh
HTTP/1.1 200 OK Server: AliyunOSS Content-Length: 329 Content-Type: Application/xml Connection: keep-alive x-oss-request-id: 594f0751-3b1e-168f-4501-4ac71d21**** Date: Fri, 24 Feb 2012 10:19:18 GMT <?xml version="1.0" encoding="UTF-8"?> <CompleteMultipartUploadResult xmlns="http://doc.oss-cn-hangzhou.aliyuncs.com"> <EncodingType>url</EncodingType> <Location>http://oss-example.oss-cn-hangzhou.aliyuncs.com /multipart.data</Location> <Bucket>oss-example</Bucket> <Key>multipart.data</Key> <ETag>"B864DB6A936D376F9F8D3ED3BBE540****"</ETag> </CompleteMultipartUploadResult>Menyelesaikan tugas unggah multi-bagian suatu objek dalam bucket dengan pengendalian versi
Permintaan contoh
POST /multipart.data?uploadId=63C06A5CFF6F4AE4A6BB3AD7F01C**** HTTP/1.1 Host: oss-example.oss-cn-hangzhou.aliyuncs.com Content-Length: 223 Date: Tue, 09 Apr 2019 07:01:56 GMT Authorization: OSS4-HMAC-SHA256 Credential=LTAI********************/20250417/cn-hangzhou/oss/aliyun_v4_request,AdditionalHeaders=content-length,Signature=a7c3554c729d71929e0b84489addee6b2e8d5cb48595adfc51868c299c0c218e <CompleteMultipartUpload> <Part> <PartNumber>1</PartNumber> <ETag>"25A9F4ABFCC05743DF6E2C886C56****"</ETag> </Part> <Part> <PartNumber>5</PartNumber> <ETag>"25A9F4ABFCC05743DF6E2C886C56****"</ETag> </Part> </CompleteMultipartUpload>Tanggapan sukses contoh
HTTP/1.1 200 OK Server: AliyunOSS Content-Length: 314 Content-Type: Application/xml Connection: keep-alive x-oss-version-id: CAEQMxiBgID6v86D0BYiIDc3ZDI0YTBjZGQzYjQ2Mjk4OWVjYWNiMDljYzhlN**** x-oss-request-id: 5CAC4364B7AEADE017000662 Date: Tue, 09 Apr 2019 07:01:56 GMT <?xml version="1.0" encoding="UTF-8"?> <CompleteMultipartUploadResult> <Location>http://oss-example.oss-cn-hangzhou.aliyuncs.com/multipart.data</Location> <Bucket>oss-example</Bucket> <Key>multipart.data</Key> <ETag>"097DE458AD02B5F89F9D0530231876****"</ETag> </CompleteMultipartUploadResult>
OSS SDKs
Anda dapat menggunakan OSS SDK untuk bahasa pemrograman berikut guna memanggil operasi CompleteMultipartUpload:
ossutil
Untuk informasi tentang perintah ossutil yang sesuai dengan operasi CompleteMultipartUpload, lihat complete-multipart-upload.
Kode error
Error code | HTTP status code | Description |
InvalidDigest | 400 | Nilai Content-MD5 dalam permintaan berbeda dengan hash MD5 yang dihitung oleh OSS. Untuk mencegah error selama transmisi data, Anda dapat menyertakan nilai Content-MD5 dalam permintaan. OSS menghitung hash MD5 dari data yang diunggah dan membandingkannya dengan nilai Content-MD5 dalam permintaan. |
FileAlreadyExists | 409 | Possible causes:
|