Este tema describe cómo descargar un objeto de un bucket a un archivo local.
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, utilice un endpoint interno. Para obtener más información sobre las regiones y los endpoints compatibles, consulte Regions and endpoints.
Este tema muestra cómo crear una instancia de OSSClient con un endpoint de OSS. Para conocer configuraciones alternativas, como usar un dominio personalizado o autenticarse con credenciales de Security Token Service (STS), consulte Create an OssClient.
Permisos
De forma predeterminada, una cuenta de Alibaba Cloud tiene todos los permisos. Los usuarios o roles de RAM asociados a una cuenta de Alibaba Cloud no cuentan con ningún permiso de manera predeterminada. La cuenta de Alibaba Cloud o el administrador de la cuenta debe otorgar los permisos de operación mediante RAM policies o Bucket Policy.
|
API |
Action |
Descripción |
|
GetObject |
|
Descarga un objeto. |
|
|
Este permiso es obligatorio cuando se descarga un objeto y se especifica su versión mediante versionId. |
|
|
|
Este permiso es obligatorio cuando se descarga un objeto cuyos metadatos incluyen X-Oss-Server-Side-Encryption: KMS. |
Código de ejemplo
A continuación se muestra el código que descarga el objeto testfolder/exampleobject.txt del bucket examplebucket. El objeto se guarda como examplefile.txt en el directorio local D:\localpath.
<?php
if (is_file(__DIR__ . '/../autoload.php')) {
require_once __DIR__ . '/../autoload.php';
}
if (is_file(__DIR__ . '/../vendor/autoload.php')) {
require_once __DIR__ . '/../vendor/autoload.php';
}
use OSS\Credentials\EnvironmentVariableCredentialsProvider;
use OSS\OssClient;
// Obtain access credentials from environment variables. Before you run this sample code, make sure that the OSS_ACCESS_KEY_ID and OSS_ACCESS_KEY_SECRET environment variables are set.
$provider = new EnvironmentVariableCredentialsProvider();
// Specify the Endpoint for the region where the bucket is located. For example, for the China (Hangzhou) region, set the Endpoint to https://oss-cn-hangzhou.aliyuncs.com.
$endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
// Specify the bucket name. Example: examplebucket.
$bucket= "examplebucket";
// Specify the full path of the object. Do not include the bucket name. Example: testfolder/exampleobject.txt.
$object = "testfolder/exampleobject.txt";
// Download the object to a local file named examplefile.txt and save it to the specified local path (D:\\localpath). If the local file exists, it is overwritten. If it does not exist, it is created.
// If you do not specify a local path, the downloaded file is saved to the local path of the project where the sample program resides.
$localfile = "D:\\localpath\\examplefile.txt";
$options = array(
OssClient::OSS_FILE_DOWNLOAD => $localfile
);
// Use a try-catch block to catch exceptions. If an exception is caught, the download failed. If no exception is caught, the download is successful.
try{
$config = array(
"provider" => $provider,
"endpoint" => $endpoint,
"signatureVersion" => OssClient::OSS_SIGNATURE_VERSION_V4,
"region"=> "cn-hangzhou"
);
$ossClient = new OssClient($config);
$ossClient->getObject($bucket, $object, $options);
} catch(OssException $e) {
printf(__FUNCTION__ . ": FAILED\n");
printf($e->getMessage() . "\n");
return;
}
print(__FUNCTION__ . ": OK, please check localfile: 'examplefile.txt'" . "\n");
Preguntas frecuentes
¿Cómo cambio el nombre de un archivo al descargarlo?
Utilice el parámetro $localfile del código de ejemplo para cambiar el nombre del archivo descargado. Por ejemplo, para descargar exampleobject.txt de un bucket y guardarlo como examplefile.txt en una ruta local específica, establezca el parámetro en $localfile = "D:\\localpath\\examplefile.txt";.
Referencias
Para consultar el código de ejemplo completo que muestra cómo descargar un objeto a un archivo local, revise el ejemplo en GitHub.
Para obtener más información sobre la operación de API que permite descargar un objeto a un archivo local, consulte GetObject.