덩어리로 가져오기
v1.3.0
병렬 다운로드, 진행률 추적 및 중단 요청을 지원하여 대용량 파일을 청크로 가져오는 유틸리티입니다.
npm을 사용하여 패키지를 설치합니다.
npm install fetch-in-chunks
import fetchInChunks from 'fetch-in-chunks' ;
async function fetchInChunks ( url , options = { } )
url
( string
): 다운로드할 파일의 URL입니다.options
( object
, option): 추가 옵션이 포함된 개체입니다.options.chunkSize
( number
, 기본값: 5 * 1024 * 1024
): 다운로드할 각 청크의 크기(바이트)입니다.options.maxParallelRequests
( number
, 기본값: 1
): 병렬로 다운로드할 청크 수입니다.options.progressCallback
( function
, option ): 다운로드된 바이트 수와 파일의 전체 크기와 함께 호출되는 콜백 함수입니다.options.signal
( AbortSignal
, 선택 사항): 다운로드를 중단하는 데 사용할 수 있는 AbortSignal
개체입니다. Promise
: 다운로드한 파일이 포함된 Blob
으로 확인되는 Promise입니다. 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 ( ) ;
}
이 프로젝트는 Apache 2.0 라이선스에 따라 라이선스가 부여됩니다. 자세한 내용은 LICENSE
파일을 참조하세요.