Cette rubrique explique comment charger rapidement des fichiers locaux vers Object Storage Service (OSS) via un chargement simple. Cette méthode, simple d'utilisation, convient aux scénarios nécessitant un chargement rapide de fichiers locaux.
Notes
L'exemple de code de cette rubrique utilise l'ID de région
cn-hangzhoude la région Chine (Hangzhou). Par défaut, l'endpoint public permet d'accéder aux ressources d'un bucket. Pour accéder aux ressources du bucket depuis d'autres services Alibaba Cloud situés dans la même région, utilisez l'endpoint interne. Pour plus d'informations sur les régions et les endpoints OSS, consultez Régions et endpoints.Dans cette rubrique, les identifiants d'accès proviennent des variables d'environnement. Pour savoir comment les configurer, consultez Configuration des identifiants d'accès.
Permissions
Par défaut, un compte Alibaba Cloud dispose de toutes les autorisations. Les utilisateurs RAM ou les rôles RAM associés à un compte Alibaba Cloud ne disposent d'aucune autorisation par défaut. Le compte Alibaba Cloud ou l'administrateur du compte doit accorder les autorisations d'opération via les politiques RAM ou la Bucket Policy.
|
API |
Action |
Description |
|
PutObject |
|
Charge un objet. |
|
|
Requis si vous spécifiez des tags d'objet à l'aide de l'en-tête |
|
|
|
Requis si l'en-tête |
|
|
|
Méthode
func (c *Client) PutObject(ctx context.Context, request *PutObjectRequest, optFns ...func(*Options)) (*PutObjectResult, error)
func (c *Client) PutObjectFromFile(ctx context.Context, request *PutObjectRequest, filePath string, optFns ...func(*Options)) (*PutObjectResult, error)
|
Opération |
Description |
|
Client.PutObject |
Effectue un chargement simple d'un objet dont la taille est inférieure ou égale à 5 GiB. Prend en charge CRC-64 (activé par défaut). Affiche la progression d'une tâche de chargement dans la barre de progression. Prend en charge les corps de requête de type io.Reader. Si le corps de requête est de type io.Seeker, l'objet est rechargé en cas d'échec de la tâche. |
|
Client.PutObjectFromFile |
Offre les mêmes fonctionnalités que Client.PutObject. Récupère le corps de la requête à partir du chemin du fichier local. |
Paramètres de requête
|
Paramètre |
Type |
Description |
|
ctx |
context.Context |
Contexte de la requête, permettant de spécifier sa durée totale. |
|
request |
*PutObjectRequest |
Paramètres d'une opération API spécifique, tels que Acl, ForbidOverwrite et Metadata. Pour plus d'informations, consultez PutObjectRequest. |
|
optFns |
...func(*Options) |
Facultatif. Paramètre au niveau de l'opération. Pour plus d'informations, consultez Options. |
Paramètres de réponse
|
Paramètre |
Type |
Description |
|
result |
*PutObjectResult |
Réponse à l'opération. Ce paramètre est valide lorsque la valeur de err est nil. Pour plus d'informations, consultez PutObjectResult. |
|
err |
error |
État de la requête. Si la requête échoue, la valeur de err n'est pas nil. |
Exemples
L'exemple de code suivant montre comment charger un fichier local vers un bucket spécifique :
package main
import (
"context"
"flag"
"log"
"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss"
"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss/credentials"
)
// Specify the global variables.
var (
region string // The region in which the bucket is located.
bucketName string // The name of the bucket.
objectName string // The name of the object.
)
// Specify the init function used to initialize command line parameters.
func init() {
flag.StringVar(®ion, "region", "", "The region in which the bucket is located.")
flag.StringVar(&bucketName, "bucket", "", "The name of the bucket.")
flag.StringVar(&objectName, "object", "", "The name of the object.")
}
func main() {
// Parse command line parameters.
flag.Parse()
// Check whether the bucket name is empty.
if len(bucketName) == 0 {
flag.PrintDefaults()
log.Fatalf("invalid parameters, bucket name required")
}
// Check whether the region is empty.
if len(region) == 0 {
flag.PrintDefaults()
log.Fatalf("invalid parameters, region required")
}
// Check whether the object name is empty.
if len(objectName) == 0 {
flag.PrintDefaults()
log.Fatalf("invalid parameters, object name required")
}
// Load the default configurations and specify the credential provider and region.
cfg := oss.LoadDefaultConfig().
WithCredentialsProvider(credentials.NewEnvironmentVariableCredentialsProvider()).
WithRegion(region)
// Create an OSSClient instance.
client := oss.NewClient(cfg)
// Specify the path of the local file that you want to upload. Example: /Users/localpath/exampleobject.txt.
localFile := "/Users/localpath/exampleobject.txt"
// Create a request to upload the local file.
putRequest := &oss.PutObjectRequest{
Bucket: oss.Ptr(bucketName), // Specify the name of the bucket.
Key: oss.Ptr(objectName), // Specify the name of the object.
StorageClass: oss.StorageClassStandard, // Set the storage class of the object to Standard.
Acl: oss.ObjectACLPrivate, // Set the access control list (ACL) of the object to private.
Metadata: map[string]string{
"yourMetadataKey 1": "yourMetadataValue 1", // Specify the metadata of the object.
},
}
// Execute the request to upload the local file.
result, err := client.PutObjectFromFile(context.TODO(), putRequest, localFile)
if err != nil {
log.Fatalf("failed to put object from file %v", err)
}
// Display the result of the object upload operation.
log.Printf("put object from file result:%#v\n", result)
}
Scénarios courants
Chargement d'une chaîne
Chargement d'un tableau d'octets
Chargement d'un flux réseau
Affichage de la progression pendant le chargement
Configuration d'un rappel lors du chargement d'un fichier local
Références
Pour consulter l'exemple de code complet relatif au chargement simple, rendez-vous sur put_object.go et put_object_from_file.go.
Pour plus d'informations sur les opérations API permettant d'effectuer un chargement simple, consultez PutObject et PutObjectFromFile.