Por padrão, ao chamar a operação GetObject em um bucket com versionamento habilitado, o OSS retorna apenas a versão atual do objeto.
Precauções
Este tópico usa o endpoint público da região china (Hangzhou). Para acessar o OSS a partir de outros serviços alibaba cloud na mesma região, use um endpoint interno. Para obter detalhes sobre regiões e endpoints compatíveis, consulte Regions and endpoints.
Este tópico demonstra como crie uma instância OSSClient usando um endpoint do OSS. Para configurações alternativas, como uso de domínio personalizado ou autenticação com credenciais do Security Token service (STS), consulte Create an OssClient.
Para baixe um arquivo, você precisa ter a permissão
oss:GetObject. Para obter mais informações, consulte Grant custom permissions to a RAM user.
Informações de contexto
Ao chamar a operação GetObject em um bucket, um dos três cenários a seguir ocorre:
Se a versão atual do objeto no bucket for um marcador de exclusão (exclua marker), o OSS retorna 404 Not Found.
Se você especifique o ID de versão de um objeto em um parâmetro de consulta, o OSS retorna a versão correspondente. Se o ID de versão for defina como "null", o OSS retorna a versão do objeto cujo ID de versão é "null".
Se você tentar recuperar um marcador de exclusão especificando seu ID de versão, o OSS retorna 405 Method Not Allowed.
Código de exemplo
O código a seguir mostra como baixe um arquivo:
<?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 obter mais informações, consulte GetObject.