buscar en trozos
v1.3.0
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 install fetch-in-chunks
import fetchInChunks from 'fetch-in-chunks' ;
async function fetchInChunks ( url , options = { } )
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
: una promesa que se resuelve en un Blob
que contiene el archivo descargado. import fetchInChunks from 'fetch-in-chunks' ;
async function downloadFile ( ) {
try {
const blob = await fetchInChunks ( 'https://example.com/largefile.zip' ) ;
return blob ;
} catch ( error ) {
console . error ( 'Error fetching file:' , error ) ;
}
}
downloadFile ( ) ;
import fetchInChunks from 'fetch-in-chunks' ;
async function downloadFileWithProgress ( ) {
try {
const blob = await fetchInChunks ( 'https://example.com/largefile.zip' , {
progressCallback : ( downloaded , total ) => {
console . log ( `Downloaded ${ ( ( downloaded / total ) * 100 ) . toFixed ( 2 ) } %` ) ;
} ,
} ) ;
return blob ;
} catch ( error ) {
console . error ( 'Error fetching file:' , error ) ;
}
}
downloadFileWithProgress ( ) ;
AbortController
import fetchInChunks from 'fetch-in-chunks' ;
async function downloadFileWithAbort ( ) {
const controller = new AbortController ( ) ;
const signal = controller . signal ;
try {
const blob = await fetchInChunks ( 'https://example.com/largefile.zip' , {
signal ,
} ) ;
return blob ;
} catch ( error ) {
if ( error . name === 'AbortError' ) {
console . log ( 'Download aborted' ) ;
} else {
console . error ( 'Error fetching file:' , error ) ;
}
}
// To abort the download at any time
controller . abort ( ) ;
}
Este proyecto está bajo la licencia Apache 2.0. Consulte el archivo LICENSE
para obtener más detalles.