Una carga por adición agrega contenido al final de un objeto anexable existente mediante el método AppendObject.
Precauciones
Para ejecutar una carga por adición con el kit de desarrollo de software (SDK) de Browser.js, debe exponer el encabezado
x-oss-next-append-positionen las reglas de origen cruzado del bucket. De lo contrario, no se puede obtener la posición de adiciónnextAppendPositiony la carga falla. Para obtener más información, consulte Set cross-origin resource sharing.Este tema muestra cómo crear una instancia de OSSClient con un endpoint de OSS. Para conocer configuraciones alternativas, como usar un dominio personalizado o autenticarse con credenciales de Security Token Service (STS), consulte Initialization (Browser.js SDK).
En esta sección también se explica cómo crear una instancia de OSSClient con un endpoint de OSS. Si necesita otras opciones de configuración, como emplear un dominio personalizado o autenticarse con credenciales de Security Token Service (STS), consulte Client configuration.
Si el objeto no existe, la operación AppendObject crea un nuevo objeto anexable.
-
Si el objeto ya existe, se aplican a continuación casos cuando se invoca la operación AppendObject:
Si el objeto es anexable y la posición de adición especificada coincide con la longitud actual del objeto, el contenido se agrega al final.
Si el objeto es anexable pero la posición de adición especificada no coincide con la longitud actual del objeto, se devuelve la excepción PositionNotEqualToLength.
Si el objeto no es anexable, por ejemplo, un objeto Normal cargado mediante una carga simple, se devuelve la excepción ObjectNotAppendable.
Permisos
De forma predeterminada, una cuenta de Alibaba Cloud tiene todos los permisos. Los usuarios o roles de RAM bajo una cuenta de Alibaba Cloud no cuentan con ningún permiso de manera predeterminada. La cuenta de Alibaba Cloud o el administrador de la cuenta debe otorgar los permisos de operación mediante RAM policies o Bucket Policy.
|
API |
Action |
Descripción |
|
AppendObject |
|
Esta operación permite cargar un objeto al agregarlo a uno existente. |
|
|
Este permiso es obligatorio cuando se especifican etiquetas de objeto mediante x-oss-tagging durante una carga por adición. |
Ejemplos
A continuación se muestra el código para ejecutar una carga por adición:
<!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>
Referencias
Para consultar el código de ejemplo completo de una carga por adición, vea los ejemplos en GitHub.
Para obtener más información sobre la operación de API correspondiente a la carga por adición, consulte AppendObject.