Todos os produtos
Search
Central de documentação

Object Storage Service:Uploads por acréscimo (Ruby SDK)

Última atualização: Jul 03, 2026

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

Observações

  • 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 Regiões e endpoints.

  • Este tópico demonstra como criar uma instância OSSClient com 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 Configuração do cliente.

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

  • Se o arquivo já existir:

    • Caso o arquivo seja um objeto anexável e a posição de acréscimo especificada corresponda ao tamanho atual, o conteúdo será adicionado ao final do arquivo.

    • Caso o arquivo seja um objeto anexável, mas a posição de acréscimo especificada não corresponda ao tamanho atual, o sistema lançará uma exceção PositionNotEqualToLength.

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

Permissões

Por padrão, uma conta Alibaba Cloud tem permissões totais. Usuários RAM ou funções RAM vinculados a essa conta não têm permissão inicialmente. A conta Alibaba Cloud ou o administrador da conta deve conceder as permissões de operação por meio de políticas do RAM ou Bucket Policy.

API

Ação

Descrição

AppendObject

oss:PutObject

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

oss:PutObjectTagging

Necessária quando você especifica tags de objeto via x-oss-tagging durante o upload por acréscimo.

Código de exemplo

O código abaixo 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 mais informações sobre a operação de API AppendObject, consulte AppendObject.