Télécharger des fichiers comme mega.co.nz

Aujourd'hui j'ai vérifié mega.co.nz et moi sommes excités par certaines fonctionnalités. par exemple, dans la page de téléchargement, il va télécharger des fichiers sur le navigateur et après cela les déchiffrer avec javascript.

par exemple, voir ce lien pour télécharger un fichier png :

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

dans ce lien, il va démarrer le téléchargement à l'intérieur du navigateur. j'ai vérifié réseau tab dans l'élément inspect il va télécharger des parties de fichier avec AJAX après que terminé toutes les parties de fichier, enregistrera tous les dans un fichier sur l'ordinateur automatiquement!

je veux savoir ce qu'ils font? pouvez-vous expliquer ou lien vers une ressource sur les fichiers de téléchargement à l'intérieur du navigateur comme cela?

peut aussi le faire seulement avec javascript ou devrait utiliser des plugins flash ou quelque chose comme ça?

78
demandé sur Amir Molaa 2013-04-14 04:49:43

3 réponses

Mega utilise plusieurs méthodes différentes pour ce faire: (en date du 27 Nov 2013)

  1. filesystem API (Chrome/Firefox Extension polyfill)
  2. Adobe Flash SWF Filewriter (old browsers fallback)
  3. BlobBuilder (IE10/IE11)
  4. MEGA Extension de Firefox (obsolète)
  5. Arraybuffer / Blob (en mémoire) + a[Télécharger] (pour les navigateurs qui prennent en charge un[TÉLÉCHARGER])
  6. MediaSource (expérimental solution de streaming)
  7. Blob stocké dans le stockage IndexedDB + a [Télécharger] (Firefox 20+, amélioration par rapport à la méthode de Blob en mémoire)

(source: https://eu.static.mega.co.nz/js/download_6.js )

91
répondu roberto 2013-11-27 23:00:30

Une base de mise en œuvre de multipart en-navigateur downloader aide de Blob et URL de l'Api est mis ici . Il télécharge un fichier sur 4 requêtes simultanées et montre le progrès aussi. S'il vous plaît noter qu'il semble définir range en-tête pourrait généralement pas une bonne idée sur les requêtes XHR, jeter un oeil à ce sujet .

lors du téléchargement:

While downloading

après le téléchargement:

After the download

un autre sujet intéressant serait l'implémentation de la fonctionnalité Pause/Resume de Mega. L'API XHR des navigateurs actuels n'offre pas cette capacité, donc la seule chance que vous avez est de faire plusieurs petits morceaux de petite taille téléchargeant et abandonnant sur la partie téléchargée de vos petits morceaux, la façon dont il semble est fait sur Mega aussi. Mais fetch la fonctionnalité de streaming peut être utilisée à cette fin, je n'ai pas encore assez bien exploré cela, mais il est documenté ici .

Btw, jetez un oeil à ces projets impressionnants:

3
répondu Ebrahim Byagowi 2017-12-20 09:51:55

pour ceux qui ont trouvé cette question à la recherche d'une recette réelle pour télécharger un lien En mode texte voici un simple script python qui utilise le mega.py module (install it with sudo pip install mega.py ):

import sys
import getpass
#install the module with: 'sudo pip install mega.py'
from mega import Mega

email = '_your_megamail_@domain.com'
password = getpass.getpass(prompt='Mega password for {}:'.format(email))

mega = Mega({'verbose': True})
m = mega.login(email, password)
m.download_url(sys.argv[1])

le script fonctionne avec python 2.7 et prend L'URL du mega.NZ link.

getpass est utilisé pour entrer en toute sécurité le mot de passe dans la console afin d'éviter de stocker le mot de passe dans le script - si vous êtes à l'aise hardcoding le mot de passe puis le définir dans la ligne #7.

megatools

sur la plupart des boîtes Linux / posix vous pouvez installer megatools à partir de dépôts standard, i.e.

sur ubuntu / debian:

apt install megatools

Sur MacOS:

brew install megatools

une fois installé, vous trouverez un certain nombre d'utilitaires en ligne de commande, parmi lesquels megadl qui peuvent télécharger à la fois des fichiers partagés et vos propres fichiers. Voir megadl -h pour plus de détails.

3
répondu ccpizza 2018-08-28 21:11:49