Utilitas untuk mengambil file besar dalam beberapa bagian dengan dukungan untuk unduhan paralel, pelacakan kemajuan, dan permintaan aborsi.
Instal paket menggunakan npm:
npm install ambil-dalam-potongan
impor FetchInChunks dari 'fetch-in-chunks';
fungsi async ambilInChunks(url, opsi = {})
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<Blob>
: Sebuah janji yang menyelesaikan Blob
yang berisi file yang diunduh.
impor FetchInChunks dari 'fetch-in-chunks'; fungsi async downloadFile() { coba {const blob = menunggu ambilInChunks('https://example.com/largefile.zip');return blob; } catch (kesalahan) {console.error('Kesalahan saat mengambil file:', kesalahan); }}unduhFile();
impor FetchInChunks dari 'fetch-in-chunks'; fungsi async downloadFileWithProgress() { coba {const blob = menunggu ambilInChunks('https://example.com/largefile.zip', { progresCallback: (diunduh, total) => {console.log(`Diunduh ${((diunduh / total) * 100) .toFixed(2)}%`); },});mengembalikan gumpalan; } catch (kesalahan) {console.error('Kesalahan saat mengambil file:', kesalahan); }}unduhFileDenganProgres();
AbortController
impor FetchInChunks dari 'fetch-in-chunks'; fungsi async downloadFileWithAbort() { const controller = baru AbortController(); sinyal const = pengontrol.sinyal; coba {const blob = menunggu ambilInChunks('https://example.com/largefile.zip', { signal,});return blob; } catch (kesalahan) {if (error.name === 'AbortError') { console.log('Unduh dibatalkan');} else { console.error('Kesalahan mengambil file:', error);} } // Untuk membatalkan pengunduhan kapan saja controller.batalkan();}
Proyek ini dilisensikan di bawah Lisensi Apache 2.0. Lihat file LICENSE
untuk detailnya.