Утилита для загрузки больших файлов по частям с поддержкой параллельной загрузки, отслеживания прогресса и прерывания запроса.
Установите пакет с помощью npm:
npm установить выборку частями
импортировать fetchInChunks из «fetch-in-chunks»;
асинхронная функция fetchInChunks(url, options = {})
url
( string
): URL-адрес файла для загрузки.
options
( object
, необязательный): объект, содержащий дополнительные параметры.
options.chunkSize
( number
, по умолчанию: 5 * 1024 * 1024
): размер каждого загружаемого фрагмента в байтах.
options.maxParallelRequests
( number
, по умолчанию: 1
): количество блоков для параллельной загрузки.
options.progressCallback
( function
, необязательно): функция обратного вызова, которая будет вызываться с указанием количества загруженных байтов и общего размера файла.
options.signal
( AbortSignal
, необязательно): объект AbortSignal
, который можно использовать для прерывания загрузки.
Promise<Blob>
: обещание, которое преобразуется в Blob
содержащий загруженный файл.
импортировать fetchInChunks из 'fetch-in-chunks'; асинхронная функция downloadFile() { попробуйте {const blob = await fetchInChunks('https://example.com/largefile.zip'); return blob; } catch (ошибка) {console.error('Ошибка получения файла:', error); }}downloadFile();
импортировать fetchInChunks из 'fetch-in-chunks'; асинхронная функция downloadFileWithProgress() { попробуйте {const blob = await fetchInChunks('https://example.com/largefile.zip', { ProgressCallback: (загружено, всего) => {console.log(`Загружено ${((загружено / всего) * 100) .toFixed(2)}%`); },});return blob; } catch (ошибка) {console.error('Ошибка получения файла:', error); }}downloadFileWithProgress();
AbortController
импортировать fetchInChunks из 'fetch-in-chunks'; асинхронная функция downloadFileWithAbort() { константный контроллер = новый AbortController(); константный сигнал = контроллер.сигнал; попробуйте {const blob = await fetchInChunks('https://example.com/largefile.zip', { signal,}); return blob; } catch (error) {if (error.name === 'AbortError') { console.log('Загрузка прервана');} else { console.error('Ошибка при получении файла:', error);} } // Прервать загрузку в любой момент контроллер.аборт();}
Этот проект распространяется по лицензии Apache 2.0. Подробности смотрите в файле LICENSE
.