Aujourd'hui, j'ai vérifié mega.co.nz et je suis enthousiasmé par certaines fonctionnalités. Par exemple, sur la page de téléchargement, il téléchargera les fichiers sur le navigateur et les décryptera ensuite avec javascript.
par exemple voir ce lien pour télécharger un fichier png:
https://mega.co.nz/#!7JRgFJzJ!efpJGWuPhYczLexY19ex82nuwfs4sR_DG4JXddeClH4
dans ce lien, le téléchargement démarre dans le navigateur. J'ai vérifié l'onglet réseau dans l'élément inspect, il téléchargera des parties du fichier avec AJAX après avoir terminé toutes les parties du fichier, les enregistrera toutes dans un fichier sur l'ordinateur automatiquement!
je veux savoir ce qu'ils font? pouvez-vous expliquer ou créer un lien vers une ressource sur le téléchargement de fichiers dans le navigateur comme ça?
peut également le faire uniquement avec javascript ou devrait utiliser des plugins flash ou quelque chose comme ça?
la source
Réponses:
Mega utilise plusieurs méthodes différentes pour ce faire: (au 27 novembre 2013)
(source: https://eu.static.mega.co.nz/js/download_6.js )
la source
Une implémentation de base du téléchargeur dans le navigateur en plusieurs parties à l'aide des API Blob et URL est présentée ici . Il télécharge un fichier sur 4 requêtes simultanées et montre également la progression. Veuillez noter qu'il semble que la définition de l'en-
range
tête n'est généralement pas une bonne idée pour les demandes XHR, jetez un œil à cette rubrique .Pendant le téléchargement:
Après le téléchargement:
Un autre sujet intéressant serait la mise en œuvre de la fonctionnalité Pause / Reprise de Mega. L'API XHR des navigateurs actuels n'offre pas cette capacité, donc la seule chance que vous avez est de télécharger plusieurs morceaux de petite taille et d'abandonner la partie téléchargée de vos petits morceaux, comme cela semble se faire sur Mega également. Mais
fetch
la fonctionnalité de streaming peut être utilisée à cette fin, je n'ai pas encore suffisamment exploré cela, mais elle est documentée ici .Btw, jetez un œil à ces projets impressionnants:
la source
MEGAcmd
Il y a megacmd , l'interface de ligne de commande officielle. Vous pouvez également le construire à partir de sources sur github à https://github.com/meganz/MEGAcmd
megacmd
est un wrapper autour de Mega SDK et si vous décidez de le compiler vous-même, vous aurez besoin des mêmes dépendances (sur ubuntu) que celles répertoriées ci-dessous pour Mega SDK.Pour plus de détails sur l'utilisation, consultez le Guide de l'utilisateur MEGAcmd .
Mega SDK
Mega SDK qui peut être compilé en suivant les étapes de la page github . Il comprend l'
megacli
utilitaire qui est un shell interactif pour la synchronisation et le téléchargement / téléchargement.## compilation steps for ubuntu git clone --depth 1 https://github.com/meganz/sdk megasdk cd megasdk sudo apt install libcurl4-openssl-dev libc-ares-dev libssl-dev libcrypto++-dev zlib1g-dev libsqlite3-dev libfreeimage-dev libswscale-dev autogen.sh ./configure make -j 8 ## pass the number of CPUs you have to speed up compilation sudo make install
module python mega.py (obsolète)
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 module mega.py (installez-le avec
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])
Le script fonctionne avec python 2.7 et prend l'URL du lien mega.nz.
megatools
Sur la plupart des boîtiers Linux / posix, vous pouvez installer des megatools à partir de référentiels standard, c'est-à-dire
Sur ubuntu / debian:
Sur MacOS:
Une fois installé, vous trouverez un certain nombre d'utilitaires de ligne de commande, parmi
megadl
lesquels vous pouvez télécharger à la fois des fichiers partagés et vos propres fichiers. Voirmegadl -h
pour plus de détails.la source
À partir de 2020, vous pouvez utiliser les Service Workers pour intégrer de manière transparente votre code personnalisé avec le gestionnaire de téléchargement intégré du navigateur: https://developers.google.com/web/updates/2016/06/sw-readablestreams
Je suppose également que vous auriez les en-têtes suivants pour qu'un fichier soit téléchargé au lieu d'être affiché:
headers: { 'Content-Type': 'application/octet-stream', 'Content-Disposition': 'attachment; filename="your_filename.bin"', }
Personnellement, j'ai trouvé que cette approche fonctionnait parfaitement dans Google Chrome et Firefox, et je l'utilise déjà en production.
la source