جلب في قطع
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
، اختياري): كائن يحتوي على خيارات إضافية.options.chunkSize
( number
، الافتراضي: 5 * 1024 * 1024
): حجم كل قطعة سيتم تنزيلها بالبايت.options.maxParallelRequests
( number
، افتراضي: 1
): عدد القطع المراد تنزيلها بالتوازي.options.progressCallback
( function
، اختيارية): وظيفة رد اتصال سيتم استدعاؤها بعدد البايتات التي تم تنزيلها والحجم الإجمالي للملف.options.signal
( AbortSignal
، اختياري): كائن AbortSignal
الذي يمكن استخدامه لإحباط التنزيل. Promise
: وعد يتحول إلى Blob
يحتوي على الملف الذي تم تنزيله. 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
للحصول على التفاصيل.