2013-04-14 14 views
77

今日私はmega.co.nzをチェックして、いくつかの機能に興奮しています。 例えば、ダウンロードページでは、ブラウザ上でファイルをダウンロードし、その後、それらをjavascriptで解読します。mega.co.nzのようなファイルをダウンロード

は、例えばPNG形式のファイルをダウンロードするには、このリンクを参照してください。

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

をこのリンクでは、それはブラウザ内部のダウンロードを開始します。私は、AJAXでファイルの一部をダウンロードし、ファイルのすべての部分を完了した後、自動的にコンピュータ上の1つのファイルにすべてを保存するinspect要素のネットワークタブをチェックしました!

彼らは何をしたいのですか?あなたはそのようなブラウザの中にダウンロードファイルに関するいくつかのリソースを説明したりリンクしたりできますか?

また、javascriptでのみ行うことができますか、いくつかのフラッシュプラグインなどを使用する必要がありますか?

+2

、そしてあなたが大規模なファイルをダウンロードした場合、システムがあるため、一定のクロールに遅くなりますページング – kinokijuf

答えて

86

メガはこれを行うには、いくつかの異なる方法を使用しています(2013年11月27日現在)

  1. Filesystem API(クローム/ Firefoxの拡張機能のポリフィル)
  2. のAdobe Flash SWFてFileWriter(古いブラウザでは、フォールバック)
  3. BlobBuilder (IE10/IE11)
  4. MEGA Firefox拡張機能(非推奨)
  5. 配列バッファ/ Blob(メモリ内)+ a[download]([downloa D])
  6. MediaSource(実験ストリーミングソリューション)
  7. のIndexedDB記憶手段に記憶されたブロブ+ a[download](Firefoxの20+、メモリ内のブロブの方法に対する改善)

(ソース:https://eu.static.mega.co.nz/js/download_6.js

+0

しかし、私はそれがあまりにもfirefoxで動作すると思います。私はここでサンプルを見つけたhttp://jsfiddle.net/kGLnP/5/。このサンプルはchromeとfirefoxで正しく動作します。サファリやオペラのような他のブラウザでは何をしていますか?これらのブラウザでmega.co.nzのリンクをダウンロードすることもできます。 –

+1

はい、あなたが提供したサンプル(http://jsfiddle.net/kGLnP/5/)はFirefoxでは動作しますが、最新のもの(バージョン20または後で、サポートについての詳細はhttps://developer.mozilla.org/en-US/docs/HTML/Element/aを参照してください)。私はちょうどメガのJavaScriptコードを読んで、私の答えを更新しました。あなたがJS専用のソリューションを使用できない場合、基本的にはフラッシュを使うことになります。 – roberto

+0

ありがとう:) –

1

この質問を見つけた方は、mega.pyモジュールを使用する単純なpythonスクリプト(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]) 

GETPASSがしっかりスクリプトでパスワードを保存しないようにするために、コンソールでパスワードを入力するために使用されている - あなたがパスワードをハードコーディング慣れているならば、ライン#7で設定します。

このスクリプトは、python 2.7で動作し、mega.nzリンクのURLをとります。

0

ブロブAPIとURL APIを使用したマルチパートインブラウザーダウンローダーの基本的な実装はhereになります。 4つの同時リクエストでファイルをダウンロードし、進行状況も表示します。 rangeヘッダーはXHRリクエストでは一般的には良い考えではないようですが、this topicをご覧ください。

ダウンロード中:ダウンロードした後

While downloading

を:

After the download

もう一つの興味深いトピックはメガからの一時停止/再開機能を実装することになります。現在のブラウザのXHR APIはその機能を提供していないので、あなたが持っている唯一のチャンスは、小さなチャンクをダウンロードして、小さなチャンクのダウンロード部分をあきらめることです。しかし、その目的のためにfetchストリーミング機能を使用することはできますが、私はそれを十分に探っていませんでしたが、hereと記載されています。ところで

、これらの素晴らしいプロジェクトを見て:うん