Todos los productos
Search
Centro de documentos

Object Storage Service:Descargue reanudable (OSS SDK for Go 1.0)

Última actualización: Sep 03, 2026

Al descargar un objeto de más de 5 GB desde Object Storage Service (OSS) a una computadora local, la descarga puede fallar debido a interrupciones de red o fallos del programa. Si el objeto no se descarga tras varios intentos, utilice la descarga reanudable. Esta función divide el objeto en varias partes y las descarga en paralelo para acelerar el proceso. Durante la descarga reanudable, el progreso se registra en un archivo de punto de control. Si alguna parte falla, la siguiente descarga continúa desde la posición registrada en dicho archivo. Una vez completada la transferencia, todas las partes se combinan para formar el objeto completo.

Notas de uso

  • En este tema se utiliza el endpoint público de la región China (Hangzhou). Para acceder a OSS desde otros servicios de Alibaba Cloud en la misma región, use un endpoint interno. Para obtener más información sobre las regiones y endpoints de OSS, consulte Regions and endpoints.

  • En este tema, las credenciales de acceso se obtienen de variables de entorno. Para obtener más información sobre cómo configurar las credenciales de acceso, consulte Configure access credentials.

  • Este tema muestra cómo crear una instancia de OSSClient con un endpoint de OSS. Para configuraciones alternativas, como usar un dominio personalizado o autenticarse con credenciales de Security Token Service (STS), consulte Configure a client (Go SDK V1).

  • Para usar la descarga reanudable, debe contar con el permiso oss:GetObject. Para obtener más información, consulte Grant a custom policy.

  • Durante la descarga reanudable, el progreso se registra en un archivo de punto de control. Si alguna parte falla, la siguiente descarga comienza desde la posición indicada en ese archivo. El archivo de punto de control se elimina al finalizar la descarga reanudable.

  • OSS SDK for Go registra el progreso de la descarga en el archivo de punto de control. Asegúrese de tener permisos de escritura sobre dicho archivo.

  • No modifique la suma de verificación contenida en el archivo de punto de control. Si este archivo resulta dañado, deberá descargar todas las partes nuevamente.

  • Si el ETag del objeto no coincide, o si algunas partes se pierden o modifican durante la transferencia, será necesario volver a descargar el objeto completo.

Ejemplos

package main

import (
	"fmt"
	"os"

	"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 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. If you do not specify the path of the local file, the downloaded object is saved to the path of the project to which the sample program belongs. 
        // Set the size of each part that you want to download to 100 KB (100 x 1024) and set the number of concurrent download parts to 3. 
        // oss.Checkpoint(true, "") Specify that resumable download is enabled. By default, the checkpoint file and the downloaded object are stored in the same directory and share the same name. However, the extension of the checkpoint file is .temp. You can also use oss.Checkpoint(true, "your-cp-file.temp") to specify the name of the checkpoint file. 
	err = bucket.DownloadFile("file.zip", "D:\\file.zip", 100*1024, oss.Routines(3), oss.Checkpoint(true, ""))
	if err != nil {
		fmt.Println("Error:", err)
		os.Exit(-1)
	}
}

Referencias

  • Para consultar el código de ejemplo completo de descarga reanudable, visite GitHub.

  • Para obtener más información sobre la operación de API que permite realizar descargas reanudables, consulte GetObject.