La carga reanudable le permite especificar un punto de control antes de cargar un archivo en OSS. Si la carga se interrumpe por un error de red o por el cierre inesperado del programa, esta se puede reanudar desde dicho punto de control.
Notas de uso
Si utiliza herramientas de empaquetado como Webpack y Browserify, instale el SDK de OSS para Browser.js con el comando npm install ali-oss.
Cuando intenta acceder a un bucket de OSS desde un navegador sin reglas CORS configuradas, el navegador rechaza la solicitud. Por lo tanto, configure las reglas CORS del bucket si necesita acceder a él desde un navegador. Para obtener más información, consulte Installation.
-
En la mayoría de los casos, el SDK de OSS para Browser.js se usa dentro de navegadores. Para evitar que su par de AccessKey quede expuesto, se recomienda usar credenciales de acceso temporales obtenidas de Security Token Service (STS) al acceder a OSS.
Las credenciales de acceso temporales incluyen un par de AccessKey y un token de seguridad. El par de AccessKey está formado por un AccessKey ID y un AccessKey secret. Para conocer el procedimiento de obtención de credenciales temporales, consulte Use STS for temporary access authorization.
Código de ejemplo
A continuación se muestra un ejemplo de código para una carga reanudable.
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<title>Document</title>
</head>
<body>
<button id="submit">Upload</button>
<button id="pause">Pause</button>
<button id="resume">Resume Upload</button>
<!--Import the SDK file.-->
<script
type="text/javascript"
src="https://gosspublic.alicdn.com/aliyun-oss-sdk-6.18.0.min.js"
></script>
<script type="text/javascript">
const client = new OSS({
// Set yourRegion to the region where the bucket is located. For example, if the region is China (Hangzhou), set yourRegion to oss-cn-hangzhou.
region: 'yourRegion',
authorizationV4: true,
// The temporary AccessKey pair (AccessKey ID and AccessKey secret) obtained from Security Token Service (STS).
accessKeyId: 'yourAccessKeyId',
accessKeySecret: 'yourAccessKeySecret',
// The security token (SecurityToken) obtained from STS.
stsToken: 'yourSecurityToken',
// Specify the bucket name, for example, examplebucket.
bucket: "examplebucket",
});
// Generate a 100 MB file for the resumable upload.
const fileContent = Array(1024 * 1024 * 100)
.fill("a")
.join("");
const file = new File([fileContent], "multipart-upload-file");
// The full path of the object. Example: exampledir/exampleobject.txt.
const name = "test.txt";
// Define the checkpoint.
let abortCheckpoint;
// Get the upload and pause DOM elements.
const submit = document.getElementById("submit");
const pause = document.getElementById("pause");
// Get the resume DOM element.
const resume = document.getElementById("resume");
// Add a listener to the upload button. The upload starts when you click Upload.
submit.addEventListener("click", () => {
client
.multipartUpload(name, file, {
progress: (p, cpt, res) => {
// Assign a value to the checkpoint.
abortCheckpoint = cpt;
console.log(abortCheckpoint);
// Obtain the upload progress.
console.log(p * 100);
},
})
.then((r) => console.log(r));
});
// Add a listener to the pause button.
pause.addEventListener("click", () => {
// Pause the upload.
client.cancel();
});
const resumeUpload = async () => {
// Set the number of retries to five.
try {
const result = await client.multipartUpload(name, file, {
checkpoint: abortCheckpoint,
progress: (p, cpt, res) => {
// To implement resumable upload, you can save the checkpoint information during the upload. If an upload error occurs, pass the saved checkpoint as a parameter to multipartUpload. The upload then resumes from the point of the last failure.
abortCheckpoint = cpt;
// Obtain the upload progress.
console.log(p);
},
});
console.log(result);
} catch (e) {
console.log(e);
}
};
// Add a listener to the resume button. The upload continues when you click Resume Upload.
resume.addEventListener("click", async () => {
await resumeUpload();
});
</script>
</body>
</html>
Referencias
Para consultar el código de ejemplo completo de las cargas reanudables, visite el ejemplo de GitHub.