Tüm Ürünler
Search
Belge Merkezi

Object Storage Service:Append upload (Go SDK V1)

Son Güncelleme:Oct 01, 2026

Mevcut eklenebilir nesnelere içerik eklemek için AppendObject işlemini çağırabilirsiniz.

Notlar

  • Bu konuda Çin (Hangzhou) bölgesinin genel uç noktası kullanılmaktadır. OSS ile aynı bölgedeki diğer Alibaba Cloud hizmetlerinden OSS'e erişmek istiyorsanız dahili bir 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ınmaktadı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 konuda, bir OSS uç noktası kullanılarak bir OSSClient örneğinin nasıl oluşturulacağı gösterilmektedir. Özel etki alanı kullanma veya Security Token Service (STS) kimlik bilgileriyle kimlik doğrulama gibi alternatif yapılandırmalar için bkz. İstemci yapılandırma (Go SDK V1).

  • İçerik eklemek istediğiniz nesne mevcut değilse AppendObject işlemi eklenebilir bir nesne oluşturur.

  • İçerik eklemek istediğiniz nesne mevcutsa:

    • Nesne eklenebilir bir nesneyse ve ekleme işleminin başlayacağı belirtilen konum geçerli nesne boyutuna eşitse veriler nesnenin sonuna eklenir.

    • Nesne eklenebilir bir nesneyse ve ekleme işleminin başlayacağı belirtilen konum geçerli nesne boyutuna eşit değilse PositionNotEqualToLength hatası döndürülür.

    • Nesne eklenebilir bir nesne değilse ObjectNotAppendable hatası döndürülür.

İzinler

Varsayılan olarak bir Alibaba Cloud hesabı tam izinlere sahiptir. Bir Alibaba Cloud hesabı altındaki RAM kullanıcıları veya RAM rolleri varsayılan olarak herhangi bir izne sahip değildir. Alibaba Cloud hesabı veya hesap yöneticisi, işlem izinlerini RAM ilkeleri veya Paket İlkesi aracılığıyla vermelidir.

API

Eylem

Açıklama

AppendObject

oss:PutObject

Bu işlemi, mevcut bir nesneye ekleyerek bir nesne yüklemek için çağırabilirsiniz.

oss:PutObjectTagging

Mevcut bir nesneye ekleyerek nesne yüklerken x-oss-tagging aracılığıyla nesne etiketleri belirtirseniz bu izin gerekir.

Örnek kod

Aşağıdaki kod, ekleme yöntemiyle yüklemenin nasıl yapılacağını göstermektedir:

package main

import (
	"log"
	"strings"
	"time"

	"github.com/aliyun/aliyun-oss-go-sdk/oss"
)

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

	// Create an OSSClient instance.
	// Set yourEndpoint to the Endpoint of the bucket. For example, for the China (Hangzhou) region, set the Endpoint to https://oss-cn-hangzhou.aliyuncs.com. For other regions, use the actual Endpoint.
	// Set yourRegion to the region where the bucket is located. For example, for the China (Hangzhou) region, set the region to cn-hangzhou. For other regions, use the actual region.
	clientOptions := []oss.ClientOption{oss.SetCredentialsProvider(&provider)}
	clientOptions = append(clientOptions, oss.Region("yourRegion"))
	// Set 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 bucket name, for example, examplebucket.
	bucketName := "examplebucket" // Replace with the actual bucket name.
	bucket, err := client.Bucket(bucketName)
	if err != nil {
		log.Fatalf("Failed to get bucket: %v", err)
	}

	// Specify the full path of the object. Do not include the bucket name. For example, appendobject.txt.
	objectName := "appendobject.txt"
	var nextPos int64 = 0

	// Specify the expiration time.
	expires := time.Date(2025, time.December, 10, 23, 0, 0, 0, time.UTC)
	options := []oss.Option{
		oss.Expires(expires),
	}

	// The position for the first append upload is 0. The return value is the position for the next append upload.
	appendValue1 := "YourObjectAppendValue1"
	nextPos, err = bucket.AppendObject(objectName, strings.NewReader(appendValue1), nextPos, options...)
	if err != nil {
		log.Fatalf("Failed to append first value: %v", err)
	}

	// Perform the second append upload.
	appendValue2 := "YourObjectAppendValue2"
	nextPos, err = bucket.AppendObject(objectName, strings.NewReader(appendValue2), nextPos)
	if err != nil {
		log.Fatalf("Failed to append second value: %v", err)
	}

	log.Println("Append uploads completed successfully.")
}

SSS

İlk ekleme yöntemiyle yükleme değilse AppendObject yöntemini nasıl kullanırım?

Aşağıdaki senaryolarda, verilerin doğru konuma eklendiğinden emin olmak için nesne meta verilerini almak amacıyla GetObjectDetailedMeta yöntemini çağırabilirsiniz. Meta veriler, son ekleme yöntemiyle yüklemenin bitiş konumunu içerir.

  1. Uygulama günlüklerinin toplanması:

    • Uygulamalar çalışma zamanında büyük miktarda günlük verisi oluşturur. Ekleme yöntemiyle yükleme, her seferinde yeni bir nesne oluşturmak yerine günlük verilerini sürekli olarak aynı nesneye eklemenize olanak tanır.

  2. Gerçek zamanlı veri analizi:

    • Gerçek zamanlı veri analizi sistemleri genellikle sürekli veri akışlarını bir depolama sistemine gönderir. Ekleme yöntemiyle yükleme, bu veri akışlarını gerçek zamanlı olarak aynı nesneye eklemenize olanak tanır. Bu sayede sonraki toplu iş veya gerçek zamanlı işleme süreçleri basitleştirilir.

...
props, err := bucket.GetObjectDetailedMeta(objectName)
if err != nil {
	log.Fatalf("Failed to get object detailed meta: %v", err)
}
nextPos, err = strconv.ParseInt(props.Get("X-Oss-Next-Append-Position"), 10, 64)
if err != nil {
	log.Fatalf("Failed to parse next position: %v", err)
}

// Append upload.
appendValue2 := "YourObjectAppendValue2"
nextPos, err = bucket.AppendObject(objectName, strings.NewReader(appendValue2), nextPos)
if err != nil {
	log.Fatalf("Failed to append second value: %v", err)
}

log.Println("Append uploads completed successfully.")

İlgili belgeler

  • Ekleme yöntemiyle yükleme için eksiksiz örnek kodu görmek üzere GitHub örneğine bakın.

  • AppendObject API işlemi hakkında daha fazla bilgi için bkz. AppendObject.