Le téléchargement avec reprise divise un fichier en plusieurs parties. Celles-ci sont téléchargées séparément, puis fusionnées pour former le fichier complet.
La syntaxe catch de l'exemple de code ci-dessous repose sur les promesses ES6 et async/await. Pour plus d'informations sur l'utilisation du kit de développement logiciel (SDK), consultez la rubrique Installation du SDK Node.js.
Pour en savoir plus sur le téléchargement avec reprise, consultez la rubrique Téléchargement avec reprise. Vous pouvez également configurer des règles de cycle de vie afin de supprimer périodiquement les fragments indésirables. Pour plus d'informations, consultez la rubrique Suppression des fragments.
La fonctionnalité de téléchargement multipartite propose le paramètre progress qui permet de spécifier une fonction de rappel de progression. Le SDK y transmet le pourcentage d'achèvement et les informations de point de reprise. Pour réaliser un téléchargement avec reprise, enregistrez les informations de point de reprise pendant le transfert. En cas d'erreur, transmettez le point de reprise enregistré à la fonction multipartUpload. Le téléchargement reprend alors à l'endroit de l'échec.
Exemple de code
L'exemple suivant montre comment effectuer un téléchargement avec reprise.
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 running this 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.
bucket: 'examplebucket',
});
// Set yourfilepath to the local path of the file to upload.
const filePath = "yourfilepath";
let checkpoint;
async function resumeUpload() {
// Retry five times.
for (let i = 0; i < 5; i++) {
try {
const result = await client.multipartUpload('object-name', filePath, {
checkpoint,
async progress(percentage, cpt) {
checkpoint = cpt;
},
});
console.log(result);
break; // Break the current loop.
} catch (e) {
console.log(e);
}
}
}
resumeUpload();
Dans l'exemple précédent, le point de reprise est stocké dans une variable. Si le programme plante, les informations de point de reprise sont perdues. Pour éviter cela, enregistrez le point de reprise dans un fichier. Le programme pourra ainsi lire les informations de point de reprise depuis le fichier après un redémarrage.
Références
Pour consulter l'exemple de code complet relatif au téléchargement avec reprise, rendez-vous sur la page GitHub example.