Speed up download of a single file with multiple HTTP GET connections running in parallel
MultipartDownload is an EventEmitter
.
url
<string> Url of file to be downloadedoptions
<StartOptions> Download options (Optional)numOfConnections
<number> Number of HTTP GET connections to use for performing the download (Optional)writeToBuffer
<boolean> Store downloaded data to buffer (Optional)saveDirectory
<string> Directory to save the downloaded file (Optional)fileName
<string> Set name of the downloaded file (Optional)
Starts the download operation from the url
.
Multiple HTTP GET connections will only be used if the target server supports partial requests.
If the target server does not support partial requests, only a single HTTP GET connection will be used regardless of what the numOfConnections
is set to.
If the numOfConnections
parameter is not provided, a single connection will be used.
If the writeToBuffer
parameter is set to true
, the downloaded file will be written into a buffer.
If the saveDirectory
parameter is provided, the downloaded file will be saved to the saveDirectory
.
If the fileName
parameter is provided, the downloaded file will be renamed to fileName
.
If the fileName
parameter is not provided, the downloaded file will maintain its original file name.
err
<Error> Emitted error
data
<string> | <Buffer> Chunk of data receivedoffset
<number> Offset for the chunk of data received
The file being downloaded can be manually constructed and manipulated using the data
and offset
received.
output
<string> Downloaded file buffer or downloaded file saved path
output
is the buffer of the downloaded file if the writeToBuffer
parameter is set to true
.
output
is the location of the saved file if the saveDirectory
parameter is provided.
output
will be null
if writeToBuffer
is not set to true
or saveDirectory
parameter is not provided.
const MultipartDownload = require('multipart-download');
new MultipartDownload()
.start('https://homepages.cae.wisc.edu/~ece533/images/cat.png', {
numOfConnections: 5
})
.on('error', (err) => {
// handle error here
})
.on('data', (data, offset) => {
// manipulate data here
})
.on('end', () => {
});
const MultipartDownload = require('multipart-download');
new MultipartDownload()
.start('https://homepages.cae.wisc.edu/~ece533/images/cat.png', {
numOfConnections: 5,
writeToBuffer: true
})
.on('error', (err) => {
// handle error here
})
.on('data', (data, offset) => {
// manipulate data here
})
.on('end', (output) => {
console.log(`Downloaded file buffer: ${buffer}`);
});
const os = require('os');
const MultipartDownload = require('multipart-download');
new MultipartDownload()
.start('https://homepages.cae.wisc.edu/~ece533/images/cat.png', {
numOfConnections: 5,
saveDirectory: os.tmpdir(),
fileName: 'kitty.png'
})
.on('error', (err) => {
// handle error here
})
.on('data', (data, offset) => {
// manipulate data here
})
.on('end', (output) => {
console.log(`Downloaded file path: ${output}`);
});