Скачать файлы, такие как mega.co.nz



сегодня я проверил mega.co.nz и я в восторге от некоторых особенностей.
например, на странице загрузки он будет загружать файлы в браузере и после этого расшифровывать их с помощью javascript.



например см. Эту ссылку для загрузки файла png:



https://mega.co.nz/#!7JRgFJzJ!efpJGWuPhYczLexY19ex82nuwfs4sR_Dg4jxddeclh4



в этой ссылке, он начнет загрузку в браузере. я проверил вкладку Сеть в Проинспектировать элемент, он будет скачать части файла с AJAX после этого завершили все части файла, сохранит все из них в одном файле на компьютере автоматически!



Я хочу знать, что они делают? можете ли вы объяснить или ссылку на какой-либо ресурс о загрузке файлов внутри браузера, как это?



также можно сделать это только с помощью javascript или следует использовать некоторые плагины flash или что-то в этом роде?

1270   3  

3 ответов:

Mega использует несколько различных методов для этого: (по состоянию на 27 ноября 2013 года)

  1. API файловой системы (расширение Chrome / Firefox polyfill)
  2. Adobe Flash SWF Filewriter (старые браузеры резервного копирования)
  3. BlobBuilder (IE10/IE11)
  4. расширение MEGA Firefox (устарело)
  5. Arraybuffer / Blob (в памяти)+ a[скачать] (для браузеров, которые поддерживают а[скачать])
  6. MediaSource (экспериментальное потоковое решение)
  7. 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, посмотрите на этой теме.

во время загрузки:

While downloading

после скачать:

After the download

еще одна интересная тема-реализация функции паузы / возобновления от 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

    Ничего не найдено.