2013-04-14 12 views
77

जैसी फ़ाइलें डाउनलोड करें आज मैंने mega.co.nz की जांच की है और मैं कुछ विशेषताओं के बारे में उत्साहित हूं। उदाहरण के लिए डाउनलोड पेज में यह ब्राउज़र पर फ़ाइलों को डाउनलोड करेगा और उसके बाद उन्हें जावास्क्रिप्ट के साथ डिक्रिप्ट करेगा। इस लिंक मेंmega.co.nz

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

यह ब्राउज़र के अंदर डाउनलोड शुरू होगा:

उदाहरण के लिए इस लिंक पर एक PNG फ़ाइल डाउनलोड करने के लिए देखते हैं। मैंने निरीक्षण तत्व में नेटवर्क टैब की जांच की है, यह फ़ाइल के सभी हिस्सों को पूरा करने के बाद फ़ाइल के हिस्सों को AJAX के साथ डाउनलोड करेगा, उन सभी को कंप्यूटर पर स्वचालित रूप से एक फ़ाइल में सहेज देगा!

मैं जानना चाहता हूं कि वे क्या करते हैं? क्या आप ब्राउजर के अंदर डाउनलोड फाइलों के बारे में कुछ संसाधनों को समझा सकते हैं या लिंक कर सकते हैं?

भी इसे केवल जावास्क्रिप्ट के साथ किया जा सकता है या कुछ फ़्लैश प्लगइन्स या ऐसा कुछ उपयोग करना चाहिए?

+2

हाँ, और इस प्रणाली क्योंकि निरंतर का एक क्रॉल को धीमा करता है, तो आप एक बड़ी फ़ाइल डाउनलोड पेजिंग – kinokijuf

उत्तर

86

मेगा यह करने के लिए कई अलग अलग तरीकों का उपयोग करता: (27 नवंबर 2013 के रूप में)

  1. Filesystem API (क्रोम/फ़ायरफ़ॉक्स एक्सटेंशन polyfill)
  2. एडोब फ्लैश SWF FileWriter (पुराने ब्राउज़र वापस आने)
  3. BlobBuilder (IE10/IE11)
  4. मेगा फ़ायरफ़ॉक्स एक्सटेंशन (बहिष्कृत)
  5. Arraybuffer/ब्लॉब (स्मृति में) + a[download] (ब्राउज़रों कि एक का समर्थन के लिए [downloa घ])
  6. MediaSource (प्रयोगात्मक स्ट्रीमिंग का समाधान)
  7. ब्लॉब IndexedDB में संग्रहीत भंडारण + a[download] (फ़ायरफ़ॉक्स 20, में स्मृति ब्लॉब पद्धति पर सुधार)

(स्रोत: https://eu.static.mega.co.nz/js/download_6.js)

+0

लेकिन मुझे लगता है कि यह फ़ायरफ़ॉक्स पर भी काम करता है। मुझे यहां एक नमूना मिला http://jsfiddle.net/kGLnP/5/। यह नमूना क्रोम और फ़ायरफ़ॉक्स पर सही ढंग से काम करता है। लेकिन वे सफारी या ओपेरा जैसे अन्य ब्राउज़रों के लिए क्या करते हैं? मैं इन ब्राउज़रों के साथ mega.co.nz लिंक भी डाउनलोड कर सकता हूं .. –

+1

हां, आपके द्वारा प्रदान किया गया नमूना (http://jsfiddle.net/kGLnP/5/) फ़ायरफ़ॉक्स के लिए काम करना चाहिए, लेकिन केवल नवीनतम (संस्करण 20 या बाद में, समर्थन के बारे में अधिक जानकारी के लिए https://developer.mozilla.org/en-US/docs/HTML/Element/a देखें)। मैंने अभी मेगा के जावास्क्रिप्ट कोड को पढ़ा है और मेरा जवाब अपडेट किया है। (यह अन्य ब्राउज़रों के बारे में आपके प्रश्न का उत्तर देगा। असल में, वे फ्लैश का उपयोग करने का सहारा लेते हैं जब वे जेएस-केवल समाधान का उपयोग नहीं कर सकते हैं।) – roberto

+0

बहुत बहुत धन्यवाद :) –

1

उन लोगों के लिए जिन्होंने इस प्रश्न को टेक्स्ट मोड में एक लिंक डाउनलोड करने के लिए वास्तविक नुस्खा की खोज की है, यहां एक साधारण पायथन लिपि है जो 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]) 

getpass सुरक्षित रूप से आदेश लिपि में पासवर्ड भंडारण से बचने के लिए कंसोल में पासवर्ड दर्ज करने के लिए प्रयोग किया जाता है - अगर आप हार्डकोड पासवर्ड तो लाइन # 7 में सेट आरामदायक हैं।

स्क्रिप्ट पायथन 2.7 के साथ काम करता है और mega.nz लिंक का यूआरएल लेता है।

0

ब्लॉब और यूआरएल एपीआई का उपयोग कर मल्टीपार्ट इन-ब्राउजर डाउनलोडर का मूल कार्यान्वयन here लाया गया है। यह 4 समवर्ती अनुरोधों पर एक फ़ाइल डाउनलोड करता है और प्रगति भी दिखाता है। कृपया ध्यान दें कि ऐसा लगता है कि range हेडर सेटिंग आमतौर पर XHR अनुरोधों पर एक अच्छा विचार नहीं हो सकता है, this topic पर एक नज़र डालें।

डाउनलोड करते समय:

While downloading

डाउनलोड करने के बाद:

After the download

एक और दिलचस्प विषय मेगा से रोकें/फिर से शुरू की कार्यक्षमता को लागू किया जाएगा। वर्तमान ब्राउज़र के एक्सएचआर एपीआई उस क्षमता की पेशकश नहीं करते हैं, इसलिए आपके पास एकमात्र मौका है जो आपके छोटे टुकड़ों के डाउनलोड किए गए हिस्से को डाउनलोड करने और छोड़ने के लिए कई छोटे आकार के टुकड़े करना है, जैसा कि ऐसा लगता है कि मेगा पर भी ऐसा किया जाता है। लेकिन उस उद्देश्य के लिए fetch स्ट्रीमिंग सुविधा का उपयोग किया जा सकता है, मैंने अभी तक पर्याप्त रूप से पर्याप्त रूप से इसका पता नहीं लगाया है लेकिन इसे here दस्तावेज किया गया है।

Btw, इन भयानक परियोजनाओं पर एक नजर है: