Um utilitário para buscar arquivos grandes em pedaços com suporte para downloads paralelos, rastreamento de progresso e solicitação de interrupção.
Instale o pacote usando npm:
npm instala busca em pedaços
importar fetchInChunks de 'fetch-in-chunks';
função assíncrona fetchInChunks(url, opções = {})
url
( string
): O URL do arquivo para download.
options
( object
, opcional): Um objeto contendo opções adicionais.
options.chunkSize
( number
, padrão: 5 * 1024 * 1024
): O tamanho de cada pedaço para download em bytes.
options.maxParallelRequests
( number
, padrão: 1
): O número de pedaços para download em paralelo.
options.progressCallback
( function
, opcional): Uma função de retorno de chamada que será chamada com o número de bytes baixados e o tamanho total do arquivo.
options.signal
( AbortSignal
, opcional): Um objeto AbortSignal
que pode ser usado para abortar o download.
Promise<Blob>
: uma promessa que resolve um Blob
contendo o arquivo baixado.
importar fetchInChunks de 'fetch-in-chunks'; função assíncrona downloadFile() { tente {const blob = await fetchInChunks('https://example.com/largefile.zip');return blob; } catch (erro) {console.error('Erro ao buscar arquivo:', erro); }}downloadArquivo();
importar fetchInChunks de 'fetch-in-chunks'; função assíncrona downloadFileWithProgress() { tente {const blob = await fetchInChunks('https://example.com/largefile.zip', { progressCallback: (baixado, total) => {console.log(`Baixado ${((baixado / total) * 100) .toFixed(2)}%`); },});return blob; } catch (erro) {console.error('Erro ao buscar arquivo:', erro); }}downloadFileWithProgress();
AbortController
importar fetchInChunks de 'fetch-in-chunks'; função assíncrona downloadFileWithAbort() { controlador const = novo AbortController(); const sinal = controlador.sinal; tente {const blob = await fetchInChunks('https://example.com/largefile.zip', { signal,});return blob; } catch (erro) {if (error.name === 'AbortError') { console.log('Download abortado');} else { console.error('Erro ao buscar arquivo:', erro);} } //Para abortar o download a qualquer momento controlador.abort();}
Este projeto está licenciado sob a licença Apache 2.0. Consulte o arquivo LICENSE
para obter detalhes.