Tüm Ürünler
Search
Belge Merkezi

Object Storage Service:Resumable upload (OSS SDK for Go 1.0)

Son Güncelleme:Oct 01, 2026

Ağ kararsızlığı veya program hataları nedeniyle işlemin kesintiye uğraması riski bulunan 5 GB'tan büyük nesneleri yüklemek için kalan yüklemeyi sürdürme özelliğini kullanın. Nesne parçalara bölünür ve paralel olarak yüklenir; ilerleme durumu bir kontrol noktası dosyasında izlenir. Bir parça başarısız olursa yükleme işlemi kontrol noktasından devam eder. Tüm parçalar yüklendikten sonra birleşerek eksiksiz bir nesne oluşturulur.

Kullanım notları

  • Bu konuda Çin (Hangzhou) bölgesinin genel uç noktası kullanılmaktadır. OSS ile aynı bölgedeki diğer Alibaba Cloud hizmetlerinden OSS'ye erişmek istiyorsanız dahili uç nokta kullanın. OSS bölgeleri ve uç noktaları hakkında daha fazla bilgi için bkz. Bölgeler ve uç noktalar.

  • Bu konuda erişim kimlik bilgileri ortam değişkenlerinden alınır. Erişim kimlik bilgilerinin nasıl yapılandırılacağı hakkında daha fazla bilgi için bkz. Erişim kimlik bilgilerini yapılandırma.

  • Bu konu, bir OSS uç noktası kullanarak bir OSSClient örneği oluşturmayı göstermektedir. Özel etki alanı kullanma veya Security Token Service (STS) kimlik bilgileriyle kimlik doğrulama gibi alternatif yapılandırmalar için bkz. İstemciyi yapılandırma (Go SDK V1).

  • Kalan yüklemeyi sürdürme özelliğini kullanmak için oss:PutObject iznine sahip olmanız gerekir. Daha fazla bilgi için bkz. Özel ilke atama.

  • Yükleme ilerlemesi kontrol noktası dosyasında kaydedilir. Bu dosya üzerinde yazma izninizin bulunduğundan emin olun.

  • Kontrol noktası dosyası değiştirilmemesi gereken bir sağlama toplamı içerir. Dosya hasar görürse tüm parçaları yeniden yükleyin.

  • Yükleme sırasında yerel dosya değişirse tüm parçaları yeniden yükleyin.

Uygulama

Kalan yüklemeyi sürdürme işlemini gerçekleştirmek için aşağıdaki parametrelerle Bucket.UploadFile yöntemini çağırın.

Parametre

Açıklama

objectKey

Nesne adıdır. objectName parametresine eşdeğerdir.

filePath

Yüklenecek yerel dosyanın yoludur.

partSize

Her bir parçanın boyutudur. Geçerli değerler: 100 KB ila 5 GB. Varsayılan değer: 100 KB.

options

Yükleme seçenekleri:

  • Routines: Eş zamanlı parça yükleme sayısıdır. Varsayılan: 1 (eşzamanlılık yok).

  • Checkpoint: Kalan yüklemeyi sürdürme özelliğini etkinleştirir ve kontrol noktası dosyasını yapılandırır. Varsayılan olarak devre dışıdır.

    oss.Checkpoint(true, "") ifadesi, varsayılan kontrol noktası dosyasıyla (file.cp; yerel dosya ile aynı dizinde bulunur ve burada file yerel dosya adıdır) kalan yüklemeyi sürdürme özelliğini etkinleştirir. Özel bir kontrol noktası dosyası belirtmek için oss.Checkpoint(true, "your-cp-file.cp") ifadesini kullanın.

Not

Seçenekleri kullanarak nesne meta verilerini de ayarlayabilirsiniz. Nesne meta verilerini yönetme.

Örnekler

Aşağıdaki örnek kod, kalan yüklemeyi sürdürme işleminin nasıl gerçekleştirileceğini göstermektedir:

package main

import (
    "log"
    
    "github.com/aliyun/aliyun-oss-go-sdk/oss"
)

func main() {
    // Obtain access credentials from environment variables. Before you run the sample code, make sure that the OSS_ACCESS_KEY_ID and OSS_ACCESS_KEY_SECRET environment variables are configured. 
    provider, err := oss.NewEnvironmentVariableCredentialsProvider()
    if err != nil {
        log.Fatalf("Failed to create credentials provider: %v", err)
    }

    // Create an OSSClient instance. 
    // Specify the endpoint of the region in which the bucket is located. For example, if the bucket is located in the China (Hangzhou) region, set the endpoint to https://oss-cn-hangzhou.aliyuncs.com. Specify your actual endpoint. 
    // Specify the region in which the bucket is located. For example, if your bucket is located in the China (Hangzhou) region, set the region to cn-hangzhou. Specify your actual endpoint.
    clientOptions := []oss.ClientOption{oss.SetCredentialsProvider(&provider)}
    clientOptions = append(clientOptions, oss.Region("yourRegion"))
    // Specify the signature version.
    clientOptions = append(clientOptions, oss.AuthVersion(oss.AuthV4))
    client, err := oss.New("yourEndpoint", "", "", clientOptions...)
    if err != nil {
        log.Fatalf("Failed to create OSS client: %v", err)
    }

    // Specify the name of the bucket. Example: examplebucket. 
    bucket, err := client.Bucket("examplebucket")
    if err != nil {
        log.Fatalf("Failed to get bucket: %v", err)
    }

     // When you use UploadFile to perform resumable upload, the number of parts cannot exceed 10000. 
    // Specify the size of each part based on the size of the object that you want to upload. The size of each part ranges from 100 KB to 5 GB. Default value: 100 KB (100 x 1024). 
    // Use oss.Routines to set the number of parts that can be uploaded in parallel to 3. 
    // Specify the full path of the object. Do not include the bucket name in the full path. Example: exampledir/exampleobject.txt. 
    // Specify the full path of the local file. Example: D:\\localpath\\examplefile.txt. By default, if you do not specify the path of the local file, the file is uploaded from the path of the project to which the sample program belongs. 
    err = bucket.UploadFile("exampledir/exampleobject.txt", "D:\\localpath\\examplefile.txt", 100*1024, oss.Routines(3), oss.Checkpoint(true, ""))
    if err != nil {
        log.Fatalf("Failed to upload file: %v", err)
    }

    log.Println("File uploaded successfully.")
} 

SSS

Kalan yüklemeyi sürdürme sırasında "Too many parts, Please increase part size." hatası alırsam ne yapmalıyım?

İlgili kaynaklar

  • Tam kalan yüklemeyi sürdürme örnek koduna GitHub üzerinden erişebilirsiniz.

  • Kalan yüklemeyi sürdürme yöntemi için API referansı: UploadFile.