De forma predeterminada, una llamada a la operación GetObject en un bucket con control de versiones habilitado devuelve únicamente la versión actual del objeto.
Precauciones
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.
Para descargar un archivo, debe contar con el permiso
oss:GetObject. Para obtener más información, consulte Grant custom permissions to a RAM user.
Contexto
Cuando se llama a la operación GetObject en un bucket, ocurre uno de los tres escenarios a continuación:
Si la versión actual del objeto en el bucket es un marcador de eliminación, OSS devuelve 404 Not Found.
Si especifica el identificador de versión de un objeto en un parámetro de consulta, OSS devuelve esa versión del objeto. Si establece el identificador de versión en "null", OSS devuelve la versión del objeto que tiene el identificador de versión "null".
Si intenta recuperar un marcador de eliminación al especificar su identificador de versión, OSS devuelve 405 Method Not Allowed.
Código de ejemplo
A continuación se muestra cómo descargar un archivo:
<?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;
use OSS\CoreOssException;
// 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 set.
$provider = new EnvironmentVariableCredentialsProvider();
// The endpoint is set to China (Hangzhou) in this example. Set the endpoint to the one for your region.
$endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
$bucket= "<yourBucketName>";
// Specify the full path of the object. The full path does not include the bucket name. Example: example/test.txt.
$object = "<yourObjectName>";
// Specify the version ID of the object.
$versionId = "<yourObjectVersionId>";
$config = array(
"provider" => $provider,
"endpoint" => $endpoint,
"signatureVersion" => OssClient::OSS_SIGNATURE_VERSION_V4,
"region"=> "cn-hangzhou"
);
$ossClient = new OssClient($config);
try{
// Download the object of the specified version.
$content = $ossClient->getObject($bucket, $object, array(OssClient::OSS_VERSION_ID => $versionId));
print($content);
} catch(OssException $e) {
printf(__FUNCTION__ . ": FAILED\n");
printf($e->getMessage() . "\n");
return;
}
print(__FUNCTION__ . ": OK" . "\n");
Para obtener más información, consulte GetObject.