Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/zulhilmizainuddin/multipart-download
Speed up download of a single file with multiple HTTP GET connections running in parallel
https://github.com/zulhilmizainuddin/multipart-download
download get http multipart nodejs npm parallel typescript
Last synced: about 8 hours ago
JSON representation
Speed up download of a single file with multiple HTTP GET connections running in parallel
- Host: GitHub
- URL: https://github.com/zulhilmizainuddin/multipart-download
- Owner: zulhilmizainuddin
- License: mit
- Created: 2017-02-13T22:15:20.000Z (almost 8 years ago)
- Default Branch: master
- Last Pushed: 2022-12-07T21:14:06.000Z (about 2 years ago)
- Last Synced: 2024-04-15T07:27:03.664Z (9 months ago)
- Topics: download, get, http, multipart, nodejs, npm, parallel, typescript
- Language: TypeScript
- Homepage:
- Size: 280 KB
- Stars: 28
- Watchers: 2
- Forks: 16
- Open Issues: 6
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# multipart-download [![Build Status](https://travis-ci.org/zulhilmizainuddin/multipart-download.svg?branch=master)](https://travis-ci.org/zulhilmizainuddin/multipart-download)
[![NPM](https://nodei.co/npm/multipart-download.png?downloads=true&downloadRank=true&stars=true)](https://nodei.co/npm/multipart-download/)
Speed up download of a single file with multiple HTTP GET connections running in parallel
## Class: MultipartDownload
MultipartDownload is an `EventEmitter`.
### start(url[, options])
- `url` <string> Url of file to be downloaded
- `options` <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)
- `headers` <Object> Set custom HTTP headers (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.If the `headers` parameter is provided, the headers will be included in the HTTP request.
#### Event: 'error'
- `err` <Error> Emitted error#### Event: 'data'
- `data` <string> | <Buffer> Chunk of data received
- `offset` <number> Offset for the chunk of data receivedThe file being downloaded can be manually constructed and manipulated using the `data` and `offset` received.
#### Event: 'end'
- `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.
### ~~start(url[, numOfConnections, saveDirectory])~~ :exclamation: DEPRECATED and REMOVED in v1.0.0
### Example
#### Download without writing to buffer or saving to file
```javascript
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', () => {});
```#### Download and write to buffer
```javascript
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', (buffer) => {
console.log(`Downloaded file buffer: ${buffer}`);
});
```#### Download and save to file
```javascript
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', (filePath) => {
console.log(`Downloaded file path: ${filePath}`);
});
```