Un utilitaire permettant de récupérer des fichiers volumineux en morceaux avec prise en charge des téléchargements parallèles, du suivi des progrès et des demandes d'avortement.
Installez le package à l'aide de npm :
npm install fetch-in-chunks
importer fetchInChunks depuis 'fetch-in-chunks' ;
fonction asynchrone fetchInChunks (url, options = {})
url
( string
) : L'URL du fichier à télécharger.
options
( object
, facultatif) : un objet contenant des options supplémentaires.
options.chunkSize
( number
, par défaut : 5 * 1024 * 1024
) : la taille de chaque morceau à télécharger en octets.
options.maxParallelRequests
( number
, par défaut : 1
) : le nombre de morceaux à télécharger en parallèle.
options.progressCallback
( function
, facultatif) : Une fonction de rappel qui sera appelée avec le nombre d'octets téléchargés et la taille totale du fichier.
options.signal
( AbortSignal
, facultatif) : un objet AbortSignal
qui peut être utilisé pour abandonner le téléchargement.
Promise<Blob>
: Une promesse qui se résout en un Blob
contenant le fichier téléchargé.
importer fetchInChunks depuis 'fetch-in-chunks'; fonction asynchrone downloadFile() { essayez {const blob = wait fetchInChunks('https://example.com/largefile.zip');return blob; } catch (erreur) {console.error('Erreur lors de la récupération du fichier :', erreur); }}downloadFichier();
importer fetchInChunks depuis 'fetch-in-chunks' ; fonction asynchrone downloadFileWithProgress() { essayez {const blob = wait fetchInChunks('https://example.com/largefile.zip', { progressCallback : (téléchargé, total) => {console.log(`Téléchargé ${((téléchargé / total) * 100) .toFixed(2)}%`); },});return blob; } catch (erreur) {console.error('Erreur lors de la récupération du fichier :', erreur); }}downloadFileWithProgress();
AbortController
importer fetchInChunks depuis 'fetch-in-chunks'; fonction asynchrone downloadFileWithAbort() { contrôleur const = new AbortController(); const signal = contrôleur.signal ; essayez {const blob = wait fetchInChunks('https://example.com/largefile.zip', { signal,});return blob; } catch (erreur) {if (error.name === 'AbortError') { console.log('Téléchargement interrompu');} else { console.error('Erreur de récupération du fichier :', erreur);} } // Pour abandonner le téléchargement à tout moment contrôleur.abort();}
Ce projet est sous licence Apache 2.0. Voir le fichier LICENSE
pour plus de détails.