Vision: Allow anyone with a modern browser to drag, drop, and stream a 1GB, 10GB, or 1TB file over the Internet to a happy home.
Requirements: Files should never be read entirely into memory at any stage. File progress should be real-time and clear. Uploads should be resumable and pause-able at any time.
Implementation:
- Use the Drag and Drop API, available in modern desktop browsers, to let anyone drag a file into their browser
- Use the File API, available in modern browsers, to chunk and stream file objects in-browser
- Use the FileReader object, available in modern browsers, to read the contents of chunks into memory
Goals:
- Short-term: Use the S3 Multipart Upload API to allow users to upload files of any size directly to S3.
- Long-term: Allow upload to servers which support the Amazon S3 API but provide their own layer of authentication. Example: The Internet Archive.
- Longest-term: Instead of S3, allow users to stream files directly to other users over WebRTC, in the style of Sharefest.me, as long as their browser tab is open.
Work is in progress on the short-term goal: upload files to Amazon's S3 storage service. S3 access credentials will either be entered by users in text fields, or bookmarked in the URL's hash fragment.
Created by Eric Mill.
Builds on work by Brian Brennan, Max Ogden, Derrick Parkhurst, and Young Hahn.
This project is dedicated to the public domain. As spelled out in CONTRIBUTING:
The project is in the public domain within the United States, and copyright and related rights in the work worldwide are waived through the CC0 1.0 Universal public domain dedication.
All contributions to this project will be released under the CC0 dedication. By submitting a pull request, you are agreeing to comply with this waiver of copyright interest.