Скачать файлы, такие как mega.co.nz
сегодня я проверил mega.co.nz и я в восторге от некоторых особенностей.
например, на странице загрузки он будет загружать файлы в браузере и после этого расшифровывать их с помощью javascript.
например см. Эту ссылку для загрузки файла png:
https://mega.co.nz/#!7JRgFJzJ!efpJGWuPhYczLexY19ex82nuwfs4sR_Dg4jxddeclh4
в этой ссылке, он начнет загрузку в браузере. я проверил вкладку Сеть в Проинспектировать элемент, он будет скачать части файла с AJAX после этого завершили все части файла, сохранит все из них в одном файле на компьютере автоматически!
Я хочу знать, что они делают? можете ли вы объяснить или ссылку на какой-либо ресурс о загрузке файлов внутри браузера, как это?
также можно сделать это только с помощью javascript или следует использовать некоторые плагины flash или что-то в этом роде?
3 ответов:
Mega использует несколько различных методов для этого: (по состоянию на 27 ноября 2013 года)
- API файловой системы (расширение Chrome / Firefox polyfill)
- Adobe Flash SWF Filewriter (старые браузеры резервного копирования)
- BlobBuilder (IE10/IE11)
- расширение MEGA Firefox (устарело)
- Arraybuffer / Blob (в памяти)+ a[скачать] (для браузеров, которые поддерживают а[скачать])
- MediaSource (экспериментальное потоковое решение)
- Blob хранится в хранилище IndexedDB+a[скачать] (Firefox 20+, улучшение по сравнению с методом Blob в памяти)
(источник: https://eu.static.mega.co.nz/js/download_6.js)
базовая реализация multipart in-browser downloader с использованием Blob и URL API принесена здесь. Он загружает файл на 4 одновременных запросов и показывает прогресс. Обратите внимание, что это кажется установка
rangeзаголовок может вообще не очень хорошая идея на запросы XHR, посмотрите на этой теме.во время загрузки:
после скачать:
еще одна интересная тема-реализация функции паузы / возобновления от Mega. XHR API текущих браузеров не предлагает эту возможность, поэтому единственный шанс, который у вас есть, - это сделать несколько небольших кусков загрузки и отказаться от загруженной части ваших небольших кусков, как это кажется, также делается на Mega. Но
fetchпотоковая функция может быть использована для этой цели, я еще не изучил это достаточно хорошо, но это так документально здесь.кстати, взгляните на эти удивительные проекты:
для тех, кто нашел этот вопрос в поисках фактического рецепта для загрузки ссылки в текстовом режиме вот простой скрипт python, который использует mega.py модуль (установите его с
sudo pip install mega.py):import sys import getpass #install the module with: 'sudo pip install mega.py' from mega import Mega email = '[email protected]' password = getpass.getpass(prompt='Mega password for {}:'.format(email)) mega = Mega({'verbose': True}) m = mega.login(email, password) m.download_url(sys.argv[1])скрипт работает с Python 2.7 и принимает URL-адрес "мега".ссылка НЗ.
getpass используется для безопасного ввода пароля в консоли, чтобы избежать сохранения пароля в скрипт-если вам удобно жестко кодировать пароль, то установите его в строке #7.
megatoolsна большинстве Linux / posix коробки вы можете установить megatools из стандартных репозиториев, т. е.
на ubuntu / debian:
apt install megatoolsНа MacOS:
brew install megatoolsпосле установки вы найдете ряд утилит командной строки, среди которых
megadlкоторый может загружать как общие файлы, так и ваш собственный файл. Смотритеmegadl -hдля сведения.


Comments