All Products
Search
Document Center

Object Storage Service:CompleteMultipartUpload

Last Updated:Sep 24, 2026

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

oss:PutObject

Menggabungkan bagian-bagian menjadi satu objek.

oss:PutObjectTagging

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.

  • Jika x-oss-forbid-overwrite tidak ditentukan atau diatur ke false, objek yang sudah ada dapat ditimpa oleh objek dengan nama yang sama.

  • Jika x-oss-forbid-overwrite diatur ke true, objek yang sudah ada tidak dapat ditimpa oleh objek dengan nama yang sama.

Catatan
  • Header permintaan x-oss-forbid-overwrite tidak berlaku jika pengendalian versi diaktifkan atau ditangguhkan untuk bucket. Dalam kasus ini, operasi CompleteMultipartUpload akan menimpa objek dengan nama yang sama.

  • Jika Anda menentukan header permintaan x-oss-forbid-overwrite, performa queries per second (QPS) OSS mungkin menurun. Jika Anda ingin mengonfigurasi header x-oss-forbid-overwrite dalam jumlah besar permintaan (lebih dari 1.000 QPS), kirimkan Tiket.

x-oss-complete-all

String

No

Menentukan apakah akan mencantumkan semua bagian yang diunggah menggunakan upload ID saat ini.

Nilai valid: yes.

  • Jika x-oss-complete-all diatur ke yes dalam permintaan, OSS mencantumkan semua bagian yang diunggah menggunakan upload ID saat ini, mengurutkan bagian-bagian tersebut berdasarkan nomor bagian, lalu menjalankan operasi CompleteMultipartUpload. Saat OSS menjalankan operasi CompleteMultipartUpload, OSS tidak dapat mendeteksi bagian yang belum diunggah atau sedang dalam proses pengunggahan. Sebelum memanggil operasi CompleteMultipartUpload, pastikan semua bagian telah diunggah.

  • Jika x-oss-complete-all ditentukan dalam permintaan, badan permintaan tidak boleh ditentukan. Jika tidak, terjadi error.

  • Jika x-oss-complete-all ditentukan dalam permintaan, format tanggapan tetap tidak berubah.

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:

  • Permintaan berisi header x-oss-forbid-overwrite=true, dan bucket berisi objek yang memiliki nama yang sama dengan objek yang ingin Anda unggah.

  • Objek tempat Anda ingin menjalankan operasi CompleteMultipartUpload adalah direktori dalam bucket yang fitur hierarchical namespace-nya diaktifkan.