Você pode chamar a operação AppendObject para adicionar 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 do 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 a partir de variáveis de ambiente. Para mais informações, consulte 配置访问凭证.
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.
Se o objeto ao qual você deseja adicionar conteúdo não existir, a operação AppendObject cria um objeto anexável.
-
Se o objeto ao qual você deseja adicionar conteúdo já existir:
Se o objeto for anexável e a posição especificada para o início da operação de anexação for igual ao tamanho atual do objeto, a operação adiciona os dados ao final do objeto.
Se o objeto for anexável e a posição especificada para o início da operação de anexação não for igual ao tamanho atual do objeto, a operação retorna o erro PositionNotEqualToLength.
Se o objeto não for anexável, a operação retorna o erro ObjectNotAppendable.
Permissões
Por padrão, uma conta Alibaba Cloud tem permissões totais. Usuários RAM ou funções RAM sob 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 |
|
Você pode chamar esta operação para fazer o upload de um objeto adicionando-o a um objeto existente. |
|
|
Ao fazer o upload de um objeto por anexação a um objeto existente, esta permissão é necessária caso você especifique tags de objeto por meio de x-oss-tagging. |
Código de exemplo
O código a seguir mostra como realizar um upload por anexação:
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 da API AppendObject, consulte AppendObject.