O upload por acréscimo adiciona conteúdo ao final de um objeto do tipo append existente, utilizando o método AppendObject.
Precauções
Para fazer um upload por acréscimo usando o kit de desenvolvimento de software (SDK) Browser.js, exponha o cabeçalho
x-oss-next-append-positionnas regras de cross-origin do bucket. Caso contrário, não será possível obter a posição de acréscimonextAppendPositione o upload falhará. Para mais informações, consulte Set cross-origin resource sharing.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 Initialization (Browser.js SDK).
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 objeto não existir, a operação AppendObject criará um novo objeto do tipo append.
-
Se o objeto já existir, os seguintes casos se aplicam ao chamar a operação AppendObject:
Se for um objeto do tipo append e a posição de acréscimo especificada for igual ao tamanho atual do objeto, o conteúdo será adicionado ao final dele.
Se for um objeto do tipo append, mas a posição de acréscimo especificada não corresponder ao tamanho atual do objeto, a exceção PositionNotEqualToLength será retornada.
Se não for um objeto do tipo append, como um objeto Normal enviado por meio de um upload simples, a exceção ObjectNotAppendable será retornada.
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 nenhuma permissão 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 |
|
Use esta operação para fazer o upload de um objeto acrescentando seu conteúdo a um objeto existente. |
|
|
Especifique as tags do objeto por meio de x-oss-tagging ao fazer o upload de um objeto por acréscimo. Esta permissão é obrigatória para essa ação. |
Exemplos
O código a seguir mostra como realizar um upload por acréscimo:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Document</title>
<script src="https://gosspublic.alicdn.com/aliyun-oss-sdk-6.17.1.min.js"></script>
</head>
<body>
<input type="file" id="file" />
<button id="upload">Upload</button>
<script>
const upload = document.getElementById("upload");
const client = new OSS({
// Set yourRegion to the region where the bucket is located. For example, if the bucket is in the China (Hangzhou) region, set yourRegion to oss-cn-hangzhou.
region: 'yourRegion',
authorizationV4: true,
// The temporary AccessKey pair (AccessKey ID and AccessKey secret) obtained from STS.
accessKeyId: 'yourAccessKeyId',
accessKeySecret: 'yourAccessKeySecret',
// The security token obtained from STS.
stsToken: 'yourSecurityToken',
// Specify the bucket name.
bucket: 'examplebucket'
});
upload.addEventListener("click", async () => {
const target = file.files[0];
// Specify the full path of the object. The full path cannot contain the bucket name. Example: examplefile.txt.
// The first append upload. The return value indicates the position for the next append operation.
const result = await client.append("examplefile.txt", target);
await client.append("123", result, {
// The second append upload. The position for subsequent append operations is the length of the object (Content-Length) before the append operation.
position: result.nextAppendPosition,
});
});
</script>
</body>
</html>
Referências
Para o código de exemplo completo de um upload por acréscimo, consulte Exemplos no GitHub.
Para mais informações sobre a operação de API para upload por acréscimo, consulte AppendObject.