Utilisez le téléchargement avec reprise pour transférer des objets de plus de 5 Go lorsque l'instabilité du réseau ou des exceptions logicielles risquent d'interrompre le processus. L'objet est divisé en parties et les parties sont téléchargées en parallèle, la progression étant suivie dans un fichier de point de contrôle. Si une partie échoue, le téléchargement reprend à partir du point de contrôle. Une fois toutes les parties téléchargées, elles sont combinées pour former un objet complet.
Remarques d'utilisation
Cette rubrique utilise l'endpoint public de la région Chine (Hangzhou). Pour accéder à OSS depuis d'autres services Alibaba Cloud situés dans la même région, utilisez un endpoint interne. Pour plus d'informations sur les régions et les endpoints OSS, consultez Régions et endpoints.
Les identifiants d'accès sont obtenus à partir des variables d'environnement. Pour plus d'informations sur la configuration des identifiants d'accès, consultez Configurer les identifiants d'accès.
Cette rubrique explique comment créer une instance OSSClient avec un endpoint OSS. Pour d'autres configurations, telles que l'utilisation d'un domaine personnalisé ou l'authentification via des identifiants du Security Token Service (STS), consultez Configurer un client (SDK Go V1).
Pour utiliser le téléchargement avec reprise, vous devez disposer de l'autorisation
oss:PutObject. Pour plus d'informations, consultez Accorder une politique personnalisée.La progression du téléchargement est enregistrée dans le fichier de point de contrôle. Assurez-vous de disposer des autorisations d'écriture sur ce fichier.
Le fichier de point de contrôle contient une somme de contrôle qui ne doit pas être modifiée. Si le fichier est endommagé, retéléchargez toutes les parties.
Si le fichier local change pendant le téléchargement, retéléchargez toutes les parties.
Implémentation
Appelez Bucket.UploadFile pour effectuer un téléchargement avec reprise en utilisant les paramètres suivants.
|
Paramètre |
Description |
|
objectKey |
Nom de l'objet. Équivalent à objectName. |
|
filePath |
Chemin d'accès du fichier local à télécharger. |
|
partSize |
Taille de chaque partie. Valeurs valides : 100 Ko à 5 Go. Valeur par défaut : 100 Ko. |
|
options |
Options de téléchargement :
Remarque
Vous pouvez également définir les métadonnées de l'objet à l'aide des options. Gérer les métadonnées des objets. |
Exemples
L'exemple de code suivant montre comment effectuer un téléchargement avec reprise :
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.")
}
FAQ
Références
Le code d'exemple complet pour le téléchargement avec reprise est disponible sur GitHub.
Référence API pour la méthode de téléchargement avec reprise : UploadFile.