Todos os produtos
Search
Central de documentação

Object Storage Service:Upload retomável (Ruby SDK)

Última atualização: Sep 22, 2026

Ao fazer o upload de um objeto para o Object Storage Service (OSS) usando o upload retomável, você pode especificar um diretório para o arquivo de checkpoint, que armazena o progresso do upload. Se o upload falhar devido a uma exceção de rede ou erro no programa, a tarefa será retomada a partir da posição registrada no arquivo de checkpoint.

Implementação

O upload retomável divide um arquivo em várias partes e faz o upload de cada uma separadamente. Após o upload de todas as partes, elas são mescladas para formar o arquivo completo.

Use o método Bucket#resumable_upload para executar um upload retomável. Este método inclui os seguintes parâmetros:

Parâmetro

Descrição

Obrigatório

Valor padrão

key

O caminho completo do arquivo para upload no OSS.

Sim

Nenhum

file

O caminho completo do arquivo local para upload.

Nota

Se o valor do ETag do arquivo local mudar durante o upload, o upload falhará.

Sim

Nenhum

:cpt_file

O arquivo que registra as informações do checkpoint. É necessária permissão de gravação para este arquivo.

Nota
  • Se o upload de uma parte falhar, a próxima tentativa será retomada a partir do checkpoint registrado no arquivo .cpt. Ao chamar Bucket#resumable_upload novamente, especifique o mesmo arquivo .cpt. O arquivo .cpt é excluído após a conclusão do upload.

  • O arquivo .cpt registra o estado intermediário do upload e inclui um recurso de validação. Não edite o arquivo .cpt. Se estiver corrompido, o upload não poderá ser retomado.

Não

O arquivo file.cpt no mesmo diretório do arquivo local. file representa o nome do arquivo local.

:disable_cpt

Define se o progresso do upload é registrado. Valores válidos:

  • true: o progresso do upload não é registrado. O upload não pode ser retomado em caso de falha.

  • false: o progresso do upload é registrado. Se o upload falhar, ele é retomado a partir do checkpoint.

Não

false

:part_size

O tamanho de cada parte.

Não

4 MB

&block

Se um bloco for fornecido durante a chamada, o progresso do upload será gerenciado pelo bloco.

Não

Nenhum

Código de exemplo

O código a seguir mostra como executar um upload retomável.

require 'aliyun/oss'

client = Aliyun::OSS::Client.new(
  # The endpoint of the China (Hangzhou) region is used as an example. Specify the actual endpoint.
  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']
)
# Set the bucket name. For example, examplebucket.
bucket = client.get_bucket('examplebucket')
# Set key to the full path of the object. The full path cannot contain the bucket name. For example, exampledir/example.zip.
# Set file to the full path of the local file. For example, /tmp/example.zip.
bucket.resumable_upload('exampledir/example.zip', '/tmp/example.zip') do |p|
  puts "Progress: #{p}"
end

bucket.resumable_upload(
  'exampledir/example.zip', '/tmp/example.zip',
  :part_size => 100 * 1024, :cpt_file => '/tmp/example.zip.cpt') { |p|
  puts "Progress: #{p}"
}