Todos os produtos
Search
Central de documentação

Object Storage Service:Configure object metadata when you upload an object (OSS SDK for PHP 1.0)

Última atualização: Sep 22, 2026

Os objetos armazenados no Object Storage Service (OSS) consistem em chaves, dados e metadados do objeto. Os metadados descrevem o objeto e incluem cabeçalhos HTTP padrão e metadados de usuário. Configure cabeçalhos HTTP padrão para criar políticas personalizadas de solicitação HTTP, como políticas de cache de objetos e de download forçado de objetos. Além disso, configure metadados de usuário para identificar as finalidades ou os atributos do objeto.

Observações de uso

  • Este tópico usa o endpoint público da região China (Hangzhou). Para acessar o OSS a partir de outros serviços da Alibaba Cloud na mesma região, use um endpoint interno. Para obter detalhes sobre as regiões e os endpoints compatíveis, consulte Regions and endpoints.

  • Este tópico mostra como criar uma instância do OSSClient com um endpoint do OSS. Para configurações alternativas, como usar um domínio personalizado ou autenticar com credenciais do Security Token Service (STS), consulte Create an OssClient.

  • Para configurar os metadados do objeto, é necessária a permissão oss:PutObject. Para mais informações, consulte Grant a custom policy.

Código de exemplo

O código de exemplo a seguir mostra como configurar os metadados de um objeto ao fazer upload.

Aviso

Antes de configurar os metadados do objeto para upload, verifique se o diretório já contém um objeto com o mesmo nome para evitar substituições acidentais. Para mais informações, consulte When I upload an object to a bucket and set metadata for the object simultaneously, how do I prevent an existing object with the same name in the bucket from being overwritten?.

<?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 configured.  
$provider = new EnvironmentVariableCredentialsProvider();
// 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. 
$endpoint = "yourEndpoint";
// Specify the name of the bucket. Example: examplebucket. 
$bucket= "examplebucket";
// Specify the full path of the object. Do not include the bucket name in the full path. Example: exampledir/exampleobject.txt. 
$object = "exampledir/exampleobject.txt";
$content = file_get_contents(__FILE__);
$options = array(
    OssClient::OSS_HEADERS => array(
        'Expires' => '2012-10-01 08:00:00',
        'Content-Disposition' => 'attachment; filename="xxxxxx"',
        'x-oss-meta-self-define-title' => 'user define meta info',
    ));
try{
    $config = array(
        "provider" => $provider,
        "endpoint" => $endpoint,
        "signatureVersion" => OssClient::OSS_SIGNATURE_VERSION_V4,
        "region"=> "cn-hangzhou"
    );
    $ossClient = new OssClient($config);
    // Configure object metadata when you upload the object. 
    $ossClient->putObject($bucket, $object, $content, $options);
} catch(OssException $e) {
    printf(__FUNCTION__ . ": FAILED\n");
    printf($e->getMessage() . "\n");
    return;
}
print(__FUNCTION__ . ": OK" . "\n");
            

Referências

  • Para acessar o código de exemplo completo usado para configurar os metadados ao fazer upload de um objeto, visite o GitHub.

  • Para obter mais informações sobre a operação de API que você pode chamar para configurar os metadados ao fazer upload de um objeto, consulte PutObject.

Perguntas frequentes

Ao fazer upload de um objeto para um bucket e definir seus metadados simultaneamente, como evito a substituição de um objeto existente com o mesmo nome no bucket?

Use um dos métodos a seguir para evitar a substituição de objetos com o mesmo nome no bucket:

  • Ative o versionamento

    Se você ativar o versionamento do bucket, o OSS manterá o objeto existente com o mesmo nome como uma versão anterior e armazenará o objeto enviado como a versão atual. É possível restaurar versões anteriores de um objeto a qualquer momento. Para mais informações, consulte Enable versioning.

  • Inclua o cabeçalho x-oss-forbid-overwrite na solicitação de upload

    Inclua o cabeçalho x-oss-forbid-overwrite na solicitação de upload e defina-o como true. Se você fizer o upload de um objeto com o mesmo nome de um objeto existente no diretório de destino, o upload falhará e o OSS retornará o erro FileAlreadyExists. Para mais informações, consulte PutObject.