Object Storage Service (OSS), basit yükleme (PutObject ve PutObjectFromFile) ile çok parçalı yükleme (UploadFile) işlemleri tamamlandığında uygulama sunucunuza geri arama istekleri gönderebilir. Yükleme geri aramalarını etkinleştirmek için OSS'e gönderilen yükleme isteğine gerekli geri arama parametrelerini ekleyin.
Notlar
Bu konuda Çin (Hangzhou) bölgesinin genel uç noktası kullanılmıştır. OSS ile aynı bölgedeki diğer Alibaba Cloud hizmetlerinden OSS'e erişmek için 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 kimlik bilgileri ortam değişkenlerinden alınır. Kimlik bilgilerini yapılandırma hakkında daha fazla bilgi için bkz. Kimlik bilgilerini yapılandırın.
Bu konu, bir OSS uç noktası kullanarak bir OSSClient örneğinin nasıl oluşturulacağını gösterir. Özel alan adı kullanma veya Security Token Service (STS) kimlik bilgileriyle kimlik doğrulama gibi alternatif yapılandırmalar için bkz. İstemciyi yapılandırın (Go SDK V1).
Örnekler
Aşağıdaki örnek, examplebucket paketindeki examplefiles dizininde bulunan exampleobject.txt nesnesine bir dize yüklerken yükleme geri aramalarının nasıl yapılandırılacağını gösterir:
package main
import (
"encoding/base64"
"encoding/json"
"fmt"
"os"
"strings"
"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 {
fmt.Println("Error:", err)
os.Exit(-1)
}
// 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 the bucket is located in the China (Hangzhou) region, set the region to cn-hangzhou. Specify the actual region.
clientOptions := []oss.ClientOption{oss.SetCredentialsProvider(&provider)}
clientOptions = append(clientOptions, oss.Region("yourRegion"))
// Specify the version of the signature algorithm.
clientOptions = append(clientOptions, oss.AuthVersion(oss.AuthV4))
client, err := oss.New("yourEndpoint", "", "", clientOptions...)
if err != nil {
fmt.Println("Error:", err)
os.Exit(-1)
}
// Specify the name of the bucket. Example: examplebucket.
bucket, err := client.Bucket("examplebucket")
if err != nil {
fmt.Println("Error:", err)
os.Exit(-1)
}
// Specify custom callback parameters.
callbackUrl := "http://your.callback.server.address" // Specify the URL of the callback server.
callbackMap := map[string]string{
"callbackUrl": callbackUrl, // Specify the URL of the callback server.
"callbackBody": "bucket=${bucket}&object=${object}", // Specify the callback request body.
"callbackBodyType": "application/x-www-form-urlencoded", // Specify the type of the callback request body.
}
// Convert the configurations of the callback parameters to a JSON string and encode the string in Base64.
callbackStr, err := json.Marshal(callbackMap)
if err != nil {
fmt.Println("Error:", err)
os.Exit(-1)
}
callbackBase64 := base64.StdEncoding.EncodeToString(callbackStr)
// Specify the upload callback parameters.
options := []oss.Option{
oss.Callback(callbackBase64),
}
// Construct a string that consists of 1024 x 1024 "a" character.
content := strings.Repeat("a", 1024*1024)
// Upload the string. Do not include the bucket name in the object path.
objectPath := "examplefiles/exampleobject.txt"
err = bucket.PutObject(objectPath, strings.NewReader(content), options...)
if err != nil {
fmt.Println("Error:", err)
os.Exit(-1)
}
// A message which indicates the object is uploaded is returned.
fmt.Println("Object uploaded with callback successfully.")
}
İlgili konular
Yükleme geri aramaları için eksiksiz örnek kodu görüntülemek üzere GitHub adresini ziyaret edin.
Yükleme geri aramalarına ilişkin API işlemi hakkında daha fazla bilgi için bkz. Geri Arama.