ambil dalam potongan
v1.3.0
Utilitas untuk mengambil file besar dalam beberapa bagian dengan dukungan untuk unduhan paralel, pelacakan kemajuan, dan permintaan aborsi.
Instal paket menggunakan npm:
npm install fetch-in-chunks
import fetchInChunks from 'fetch-in-chunks' ;
async function fetchInChunks ( url , options = { } )
url
( string
): URL file yang akan diunduh.options
( object
, opsional): Sebuah objek yang berisi opsi tambahan.options.chunkSize
( number
, default: 5 * 1024 * 1024
): Ukuran setiap potongan yang akan diunduh dalam byte.options.maxParallelRequests
( number
, default: 1
): Jumlah potongan yang akan diunduh secara paralel.options.progressCallback
( function
, opsional): Fungsi panggilan balik yang akan dipanggil dengan jumlah byte yang diunduh dan ukuran total file.options.signal
( AbortSignal
, opsional): Objek AbortSignal
yang dapat digunakan untuk membatalkan pengunduhan. Promise
: Sebuah janji yang menyelesaikan Blob
yang berisi file yang diunduh. 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 ( ) ;
}
Proyek ini dilisensikan di bawah Lisensi Apache 2.0. Lihat file LICENSE
untuk detailnya.