Tous les produits
Search
Centre de documentation

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

Dernière mise à jour :Sep 22, 2026

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 :

  • Routines : nombre de téléchargements de parties simultanés. Par défaut : 1 (pas de simultanéité).

  • Checkpoint : active le téléchargement avec reprise et configure le fichier de point de contrôle. Désactivé par défaut.

    oss.Checkpoint(true, "") active le téléchargement avec reprise avec le fichier de point de contrôle par défaut (file.cp dans le même répertoire que le fichier local, où file est le nom du fichier local). Utilisez oss.Checkpoint(true, "your-cp-file.cp") pour spécifier un fichier de point de contrôle personnalisé.

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

Que faire si le message « Too many parts, Please increase part size. » s'affiche lors d'un téléchargement avec reprise ?

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.