O upload por acréscimo adiciona conteúdo ao final de um objeto anexável existente usando o método AppendObject.
Precauções
Para executar um upload por acréscimo com 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 Configurar compartilhamento de recursos de origem cruzada.Este tópico demonstra a criação de 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 Inicialização (Browser.js SDK).
Este tópico ilustra a criação de uma instância OSSClient com um endpoint do OSS. Se precisar de outras configurações, como usar um domínio personalizado ou autenticar-se com credenciais do Security Token Service (STS), consulte Configuração do cliente.
Se o objeto não existir, a operação AppendObject criará um novo objeto anexável.
-
Caso o objeto já exista, as seguintes situações se aplicam ao chamar a operação AppendObject:
Se o objeto for anexável e a posição de acréscimo especificada corresponder ao tamanho atual do objeto, o conteúdo será adicionado ao final dele.
Se o objeto for anexável, mas a posição de acréscimo informada não coincidir com o tamanho atual do objeto, o sistema retornará a exceção PositionNotEqualToLength.
Se o objeto não for anexável, como um objeto Normal enviado via upload simples, o sistema retornará a 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 operacionais necessárias por meio de políticas do RAM ou Bucket Policy.
|
API |
Ação |
Descrição |
|
AppendObject |
|
Use esta operação para enviar um objeto acrescentando-o a um objeto existente. |
|
|
Essa permissão é obrigatória quando você defina tags de objeto via x-oss-tagging durante o upload por acréscimo. |
Exemplos
O código a seguir mostra como fazer 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 acessar o código de exemplo completo sobre upload por acréscimo, consulte os exemplos no GitHub.
Para obter mais detalhes sobre a operação de API referente ao upload por acréscimo, consulte AppendObject.