ยูทิลิตี้สำหรับการดึงไฟล์ขนาดใหญ่เป็นชิ้น ๆ พร้อมรองรับการดาวน์โหลดแบบขนาน การติดตามความคืบหน้า และคำขอทำแท้ง
ติดตั้งแพ็คเกจโดยใช้ npm:
npm ติดตั้ง fetch-in-chunks
นำเข้า fetchInChunks จาก 'fetch-in-chunks';
ฟังก์ชัน async fetchInChunks (url, options = {})
url
( string
): URL ของไฟล์ที่จะดาวน์โหลด
options
( object
, option): วัตถุที่มีตัวเลือกเพิ่มเติม
options.chunkSize
( number
, ค่าเริ่มต้น: 5 * 1024 * 1024
): ขนาดของแต่ละอันที่จะดาวน์โหลดในหน่วยไบต์
options.maxParallelRequests
( number
, ค่าเริ่มต้น: 1
): จำนวนชิ้นที่จะดาวน์โหลดแบบขนาน
options.progressCallback
( function
, ตัวเลือก): ฟังก์ชันโทรกลับที่จะถูกเรียกพร้อมจำนวนไบต์ที่ดาวน์โหลดและขนาดรวมของไฟล์
options.signal
( AbortSignal
, ตัวเลือก): อ็อบเจ็กต์ AbortSignal
ที่สามารถใช้เพื่อยกเลิกการดาวน์โหลด
Promise<Blob>
: คำสัญญาที่แก้ไขเป็น Blob
ที่มีไฟล์ที่ดาวน์โหลด
นำเข้า fetchInChunks จาก 'fetch-in-chunks'; ฟังก์ชัน async downloadFile () { ลอง {const blob = await fetchInChunks('https://example.com/largefile.zip');return blob; } catch (ข้อผิดพลาด) {console.error('ข้อผิดพลาดในการดึงไฟล์:', ข้อผิดพลาด); }}ดาวน์โหลดไฟล์();
นำเข้า fetchInChunks จาก 'fetch-in-chunks'; ฟังก์ชัน async downloadFileWithProgress() { ลอง {const blob = await fetchInChunks('https://example.com/largefile.zip', {ความคืบหน้าCallback: (ดาวน์โหลด, ทั้งหมด) => {console.log(`ดาวน์โหลด ${((ดาวน์โหลด / ทั้งหมด) * 100) .toFixed(2)}%`); },}); ส่งคืนหยด; } catch (ข้อผิดพลาด) {console.error('ข้อผิดพลาดในการดึงไฟล์:', ข้อผิดพลาด); }}ดาวน์โหลดไฟล์ด้วยความคืบหน้า();
AbortController
นำเข้า fetchInChunks จาก 'fetch-in-chunks'; ฟังก์ชัน async downloadFileWithAbort() { ตัวควบคุม const = AbortController ใหม่ (); สัญญาณ const = ตัวควบคุมสัญญาณ; ลอง {const blob = await fetchInChunks('https://example.com/largefile.zip', { signal,});return blob; } catch (ข้อผิดพลาด) {if (error.name === 'AbortError') { console.log('ดาวน์โหลดถูกยกเลิก');} else { console.error('ข้อผิดพลาดในการดึงไฟล์:', ข้อผิดพลาด);} - // หากต้องการยกเลิกการดาวน์โหลดเมื่อใดก็ได้ ตัวควบคุม.ยกเลิก();}
โครงการนี้ได้รับอนุญาตภายใต้ลิขสิทธิ์ Apache 2.0 ดูไฟล์ LICENSE
สำหรับรายละเอียด