in Stücken holen
v1.3.0
Ein Dienstprogramm zum Abrufen großer Dateien in Blöcken mit Unterstützung für parallele Downloads, Fortschrittsverfolgung und Anforderungsabbruch.
Installieren Sie das Paket mit npm:
npm install fetch-in-chunks
import fetchInChunks from 'fetch-in-chunks' ;
async function fetchInChunks ( url , options = { } )
url
( string
): Die URL der herunterzuladenden Datei.options
( object
, optional): Ein Objekt, das zusätzliche Optionen enthält.options.chunkSize
( number
, Standard: 5 * 1024 * 1024
): Die Größe jedes herunterzuladenden Blocks in Bytes.options.maxParallelRequests
( number
, Standard: 1
): Die Anzahl der Blöcke, die parallel heruntergeladen werden sollen.options.progressCallback
( function
, optional): Eine Rückruffunktion, die mit der Anzahl der heruntergeladenen Bytes und der Gesamtgröße der Datei aufgerufen wird.options.signal
( AbortSignal
, optional): Ein AbortSignal
Objekt, das zum Abbrechen des Downloads verwendet werden kann. Promise
: Ein Versprechen, das in einen Blob
aufgelöst wird, der die heruntergeladene Datei enthält. 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 ( ) ;
}
Dieses Projekt ist unter der Apache 2.0-Lizenz lizenziert. Einzelheiten finden Sie in der LICENSE
Datei.