Una utilidad para recuperar archivos grandes en fragmentos con soporte para descargas paralelas, seguimiento del progreso y solicitud de aborto.
Instale el paquete usando npm:
npm instala la búsqueda de fragmentos
importar fetchInChunks desde 'fetch-in-chunks';
función asíncrona fetchInChunks (url, opciones = {})
url
( string
): la URL del archivo a descargar.
options
( object
, opcional): un objeto que contiene opciones adicionales.
options.chunkSize
( number
, predeterminado: 5 * 1024 * 1024
): el tamaño de cada fragmento a descargar en bytes.
options.maxParallelRequests
( number
, predeterminado: 1
): el número de fragmentos que se descargarán en paralelo.
options.progressCallback
( function
, opcional): una función de devolución de llamada que se llamará con la cantidad de bytes descargados y el tamaño total del archivo.
options.signal
( AbortSignal
, opcional): un objeto AbortSignal
que se puede utilizar para cancelar la descarga.
Promise<Blob>
: una promesa que se resuelve en un Blob
que contiene el archivo descargado.
importar fetchInChunks desde 'fetch-in-chunks'; función asíncrona downloadFile() { intente {const blob = await fetchInChunks('https://example.com/largefile.zip');devuelva blob; } catch (error) {console.error('Error al recuperar el archivo:', error); }}descargarArchivo();
importar fetchInChunks desde 'fetch-in-chunks'; función asíncrona downloadFileWithProgress() { intente {const blob = await fetchInChunks('https://example.com/largefile.zip', { ProgressCallback: (descargado, total) => {console.log(`Descargado ${((descargado/total) * 100) .toFixed(2)}%`); },});return blob; } catch (error) {console.error('Error al recuperar el archivo:', error); }}descargarFileWithProgress();
AbortController
importar fetchInChunks desde 'fetch-in-chunks'; función asíncrona downloadFileWithAbort() { controlador constante = nuevo AbortController(); señal constante = controlador.señal; intente {const blob = await fetchInChunks('https://example.com/largefile.zip', {señal,});return blob; } catch (error) {if (error.name === 'AbortError') { console.log('Descarga cancelada');} else { console.error('Error al recuperar el archivo:', error);} } //Para cancelar la descarga en cualquier momento controlador.abortar();}
Este proyecto está bajo la licencia Apache 2.0. Consulte el archivo LICENSE
para obtener más detalles.