Todos os produtos
Search
Central de documentação

Object Storage Service:Append uploads (Ruby SDK)

Última atualização: Sep 24, 2026

Chame a operação AppendObject para acrescentar conteúdo a objetos anexáveis existentes.

Observações

  • Neste tópico, usamos o endpoint público da região China (Hangzhou). Para acessar o OSS a partir de outros services da Alibaba Cloud na mesma região, utilize um endpoint interno. Para obter detalhes sobre as regiões e os endpoints suportados, consulte Regions and endpoints.

  • Este tópico demonstra como criar uma instância do OSSClient com um endpoint do OSS. Para configurações alternativas, como o uso de um domínio personalizado ou a autenticação com credenciais do Security Token Service (STS), consulte Client configuration.

  • Se o arquivo não existir, o método Bucket#append_object cria um objeto anexável.

  • Se o arquivo já existir:

    • Quando o arquivo for um objeto anexável e a posição de acréscimo especificada corresponder ao tamanho atual do arquivo, o SDK acrescenta o conteúdo ao final do arquivo.

    • Quando o arquivo for um objeto anexável, mas a posição de acréscimo especificada não corresponder ao tamanho atual do arquivo, o sistema lança a exceção PositionNotEqualToLength.

    • Quando o arquivo não for um objeto anexável, como um objeto normal enviado por um upload simples, o sistema lança a exceção ObjectNotAppendable.

Permissões

Por padrão, uma conta Alibaba Cloud tem permissões totais. Os usuários ou funções do RAM vinculados a uma conta Alibaba Cloud não possuem permissões por padrão. A conta Alibaba Cloud ou o administrador da conta deve conceder as permissões de operação por meio de RAM policies ou Bucket Policy.

API

Ação

Descrição

AppendObject

oss:PutObject

Chame esta operação para fazer o upload de um objeto acrescentando-o a um objeto existente.

oss:PutObjectTagging

Ao fazer o upload de um objeto acrescentando-o a um objeto existente, essa permissão é necessária caso especifique tags de objeto por meio de x-oss-tagging.

Código de exemplo

O código a seguir mostra como fazer um upload por acréscimo.

require 'aliyun/oss'

client = Aliyun::OSS::Client.new(
  # The China (Hangzhou) region is used as an example. Specify the actual region.
  endpoint: 'https://oss-cn-hangzhou.aliyuncs.com',
  # 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.
  access_key_id: ENV['OSS_ACCESS_KEY_ID'],
  access_key_secret: ENV['OSS_ACCESS_KEY_SECRET']
)

# Specify the bucket name, for example, examplebucket.
bucket = client.get_bucket('examplebucket')
# Specify the full path of the object. The full path cannot contain the bucket name.
bucket.append_object('my-object', 0)

# Append content to the end of the file.
next_pos = bucket.append_object('my-object', 0) do |stream|
  100.times { |i| stream << i.to_s }
end
next_pos = bucket.append_object('my-object', next_pos, :file => 'local-file-1')
next_pos = bucket.append_object('my-object', next_pos, :file => 'local-file-2')

Referências

Para obter mais informações sobre a operação da API AppendObject, consulte AppendObject.