Todos os produtos
Search
Central de documentação

Object Storage Service:Append upload (Node.js SDK)

Última atualização: Jul 03, 2026

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

Observações de uso

  • Este tópico utiliza 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 endpoints suportados, consulte Regiões e endpoints.

  • Neste tópico, as credenciais de acesso são obtidas de variáveis de ambiente. Para mais informações, consulte Configurar credenciais de acesso.

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

  • Caso o objeto ao qual você deseja acrescentar conteúdo não exista, a operação AppendObject cria um objeto anexável.

  • Se o objeto ao qual você deseja acrescentar conteúdo já existir:

    • Quando o objeto for anexável e a posição especificada para início da operação de acréscimo for igual ao tamanho atual do objeto, os dados serão adicionados ao final dele.

    • Quando o objeto for anexável, mas a posição especificada para início da operação de acréscimo não for igual ao tamanho atual do objeto, o erro PositionNotEqualToLength será retornado.

    • Caso o objeto não seja do tipo anexável, o sistema retorna o erro ObjectNotAppendable.

Permissões

Por padrão, uma conta Alibaba Cloud possui permissões totais. Usuários RAM ou funções RAM vinculados a uma conta Alibaba Cloud não têm 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 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

Essa permissão é necessária quando, durante o upload por acréscimo, tags de objeto forem especificadas via x-oss-tagging.

Código de exemplo

O código a seguir mostra como realizar um upload por acréscimo:

const OSS = require('ali-oss')

const client = new OSS({
  // Set region to the region where the bucket is located. For example, if the bucket is in the China (Hangzhou) region, set region to oss-cn-hangzhou.
  region: 'yourRegion',
  // 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.
  accessKeyId: process.env.OSS_ACCESS_KEY_ID,
  accessKeySecret: process.env.OSS_ACCESS_KEY_SECRET,
  authorizationV4: true,
  // Specify the bucket name. Example: examplebucket.
  bucket: 'examplebucket',
});

const headers = {    
  // Specify the access permissions of the object.
  'x-oss-object-acl': 'private',
  // Specify the storage class of the object.
  'x-oss-storage-class': 'Standard',  
  // Specify the server-side encryption method. In this example, server-side encryption with OSS-managed keys (SSE-OSS) is used.
  'x-oss-server-side-encryption': 'AES256',  
};

async function append () {
  // Perform the first append upload. The return value indicates the position for the next append operation.
  // objectName specifies the full path of the object without the bucket name. Example: destfolder/examplefile.txt.
  // localFile specifies the full path of the local file, including the file extension. Example: /users/local/examplefile.txt.
  let result = await client.append('objectName', 'localFile'
  // Custom headers and metadata.
  //,{headers} 
  )

  // Perform the second append upload. The position for the next append operation is the length of the object before this append operation (Content-Length).
  result = await client.append('objectName', 'localFile', {
    position: result.nextAppendPosition
  })
}

append();

Referências

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