Project Name | Stars | Downloads | Repos Using This | Packages Using This | Most Recent Commit | Total Releases | Latest Release | Open Issues | License | Language |
---|---|---|---|---|---|---|---|---|---|---|
Resumable.js | 4,325 | 47 | 33 | 2 years ago | 2 | November 06, 2017 | 164 | mit | JavaScript | |
A JavaScript library for providing multiple simultaneous, stable, fault-tolerant and resumable/restartable uploads via the HTML5 File API. | ||||||||||
Flow.js | 2,816 | 31 | 9 | 2 years ago | 8 | June 05, 2020 | 120 | mit | JavaScript | |
A JavaScript library providing multiple simultaneous, stable, fault-tolerant and resumable/restartable file uploads via the HTML5 File API. | ||||||||||
Android Upload Service | 2,730 | 193 | 3 | 2 months ago | 19 | November 04, 2021 | 4 | apache-2.0 | Kotlin | |
Easily upload files (Multipart/Binary/FTP out of the box) in the background with progress notification. Support for persistent upload requests, customizations and custom plugins. | ||||||||||
Evaporatejs | 1,762 | 26 | 12 | 4 months ago | 51 | October 08, 2017 | 91 | JavaScript | ||
Javascript library for browser to S3 multipart resumable uploads | ||||||||||
Express Fileupload | 1,408 | 3,056 | 451 | 4 months ago | 45 | May 24, 2022 | 38 | mit | JavaScript | |
Simple express file upload middleware that wraps around busboy | ||||||||||
Graphql Upload | 1,374 | 2,286 | 116 | a month ago | 18 | June 28, 2022 | 3 | mit | JavaScript | |
Middleware and an Upload scalar to add support for GraphQL multipart requests (file uploads via queries and mutations) to various Node.js GraphQL servers. | ||||||||||
Graphql Multipart Request Spec | 896 | 2 months ago | 2 | |||||||
A spec for GraphQL multipart form requests (file uploads). | ||||||||||
Uploader | 657 | 23 | 27 | 9 months ago | 24 | January 05, 2022 | 40 | other | JavaScript | |
A JavaScript library providing multiple simultaneous, stable, fault-tolerant and resumable/restartable file uploads via the HTML5 File API. | ||||||||||
Mod0burpuploadscanner | 439 | 2 months ago | 62 | other | Perl | |||||
HTTP file upload scanner for Burp Proxy | ||||||||||
S3 Upload Stream | 320 | 303 | 86 | 3 years ago | 19 | December 04, 2014 | 22 | mit | JavaScript | |
A Node.js module for streaming data to Amazon S3 via the multipart upload API |
A Complete File Upload API for AWS S3
Evaporate is a JS library for uploading files from a browser to AWS S3, using parallel S3's multipart uploads with MD5 checksum support and control over pausing / resuming the upload.
Table of Contents
We're in the final stages of migrating the library to Typescript and Webpack, and we're doing it to increase the maintainability of the project, but we also had reports of increased performance and lower memory usage!
The new version will foster an increase in the ease of contributing and onboarding of new maintainers.
But don't worry, as there were no contract changes, if you're using our v2
it should work out of the box.
To test it, it's very simple, you just have to install the library like this:
npm install [email protected]/EvaporateJS#pull/448/head
And that's it! It should immediately work. If you have some feedback about it, please post it here.
Configurable number of parallel uploads for each part (maxConcurrentParts
)
Configurable MD5 Checksum calculations and handling for each uploaded
part (computeContentMd5
)
Pluggable signing methods with customAuthMethod
to support AWS Lambda, async functions and more.
S3 Transfer Acceleration (s3Acceleration
)
Robust recovery when uploading huge files. Only parts that
have not been fully uploaded again. (s3FileCacheHoursAgo
, allowS3ExistenceOptimization
)
Ability to pause and resume downloads at will
Signing methods can respond to 401 and 403 response statuses and not trigger the automatic retry feature.
AWS Signature Version 2 and 4 (awsSignatureVersion
)
Reduced memory footprint when calculating MD5 digests.
Parallel file uploads while respecting maxConcurrentParts
.
If Evaporate reuses an interrupted upload or avoids uploading a file that is already available on S3, the new
callback nameChanged
will be invoked with the previous object name at the earliest moment. This indicates
that requested object name was not used.
The progress()
and complete()
callbacks provide upload stats like transfer rate and time remaining.
Pause, Resume, Cancel can act on all in-progress file uploads
$ npm install evaporate
The documentation for the usage of the whole API is available here.
This is a simple example of how you can configure it:
const Evaporate = require('EvaporateJS');
const Crypto = require('crypto');
const config = {
signerUrl: SIGNER_URL,
aws_key: AWS_KEY,
bucket: AWS_BUCKET,
cloudfront: true,
computeContentMd5: true,
cryptoMd5Method: data => Crypto
.createHash('md5')
.update(data)
.digest('base64');
};
const uploadFile = evaporate => {
const file = new File([""], "file_object_to_upload");
const addConfig = {
name: file.name,
file: file,
progress: progressValue => console.log('Progress', progressValue),
complete: (_xhr, awsKey) => console.log('Complete!'),
}
/*
The bucket and some other properties
can be changed per upload
*/
const overrides = {
bucket: AWS_BUCKET_2
};
evaporate.add(addConfig, overrides)
.then(
awsObjectKey =>
console.log('File successfully uploaded to:', awsObjectKey),
reason =>
console.log('File did not upload sucessfully:', reason);
)
}
return Evaporate.create(config).then(uploadFile);
More examples are available here.
Don't forget to check out the Browser Compatibility and Important Usage Notes pages for usage details.
Pull requests are welcome. For major changes, please open an issue first to discuss what you would like to change.
Please make sure to update tests as appropriate.
This package is licensed under the BSD 3-Clause license