2011-07-12 11 views
7

के साथ फाइलें डाउनलोड करना मैं फ़ायरफ़ॉक्स एडन डेवलपमेंट के लिए नया हूं, और यह अब तक अच्छा चल रहा है, लेकिन मैं अनिवार्य रूप से, वेब से एक फ़ाइल डाउनलोड करने, यूआरआई को कैसे सहेजता हूं, और इसे सहेजता हूं डिस्क पर मोज़िला के एमडीएन दस्तावेज में फ़ाइलों को अपलोड करने के बारे में जानकारी है, लेकिन डाउनलोडिंग फाइल अनुभाग खाली है और अभी तक लिखा जाना है। अफसोस की बात है, मुझे कोई दस्तावेज नहीं मिला है जो वर्णन करता है कि यह कैसे करें।फ़ायरफ़ॉक्स एडन

क्या कोई इस बारे में प्रासंगिक दस्तावेज के बारे में जानता है कि यह कैसे करें?

saveURL(images[i].replace(/\/s/g, "/n"), null, null, false, true, null); 

जाहिर है, पहला तर्क अनुरोध करने वाला URI है:


वर्ष फेसबुक फ़ोटो एल्बम डाउनलोडर एडऑन अपने ओवरले जावास्क्रिप्ट में इस समारोह कॉल उपयोग करता है। saveURL फ़ंक्शन कहीं भी परिभाषित नहीं किया गया है, इसलिए मुझे लगता है कि यह एक एक्सटेंशन API फ़ंक्शन है। मैंने इसे अपने नए एडन में आजमाया है, और यह काम करता है। हालांकि, मैं जानना चाहता हूं कि अन्य तर्कों का क्या अर्थ है।

+0

क्या आपने यह देखा है? http://stackoverflow.com/questions/3749231/download-file-using-javascript-jquery मैंने अपने फ़ायरफ़ॉक्स एडन में JQuery का उपयोग किया। – ysrb

+0

अफसोस की बात यह वास्तव में मेरे लिए काम नहीं करेगी, क्योंकि मेरे पास प्रश्न में वेब सर्वर तक कोई पहुंच नहीं है, और इस प्रकार एमआईएमई प्रकार को संशोधित नहीं किया जा सकता है कि फाइलें भेजी जाती हैं। एक्सटेंशन के लिए ऐसा करने के लिए मूल एपीआई विधि होनी चाहिए - मुझे बस यह नहीं मिल रहा है। –

+0

@ डेलन: 'saveURL' निश्चित रूप से एक एपीआई फ़ंक्शन नहीं है - इसे एक आयातित जावास्क्रिप्ट मॉड्यूल या उस तरह कुछ में परिभाषित किया जा सकता है। –

उत्तर

5

यह करने के लिए मानक तरीका nsIWebBrowserPersist साथ है:

var persist = 
    Cc["@mozilla.org/embedding/browser/nsWebBrowserPersist;1"]. 
    createInstance(Ci.nsIWebBrowserPersist); 
persist.saveURI(serverURI, null, null, null, "", targetFile); 

अधिक जानकारी के लिए https://developer.mozilla.org/en/Code_snippets/Downloading_Files देखें।

+1

एफएफ 1 9 के रूप में, saveURI को 7 वें पैरामीटर, privacyContext प्राप्त हुआ है। उपयोग [यहां] (https://developer.mozilla.org/en-US/docs/XPCOM_Interface_Reference/nsIWebBrowserPersist#saveURI%28%29) – Bora

1

यहां किसी भी त्वरित गलती के बिना त्वरित समाधान की तलाश करने वाले किसी भी व्यक्ति के लिए एक आसान प्रतिलिपि/पेस्ट विकल्प है। इसे अपने main.js में रखें और फ़ाइल नाम, निर्देशिका और यूआरएल बदलें।

function DownloadFile(sLocalFileName, sRemoteFileName) 
{ 
    var saveToDirectory = 'C:\\Users\\louis\\downloads\\'; 

    var chrome = require("chrome"); 

    var oIOService = chrome.Cc["@mozilla.org/network/io-service;1"].getService(chrome.Ci.nsIIOService) 

    var oLocalFile = chrome.Cc["@mozilla.org/file/local;1"].createInstance(chrome.Ci.nsILocalFile); 
    oLocalFile.initWithPath(saveToDirectory + sLocalFileName); 

    var oDownloadObserver = {onDownloadComplete: function(nsIDownloader, nsresult, oFile) {console.log('download complete...')}}; 

    var oDownloader = chrome.Cc["@mozilla.org/network/downloader;1"].createInstance(); 
    oDownloader.QueryInterface(chrome.Ci.nsIDownloader); 
    oDownloader.init(oDownloadObserver, oLocalFile); 

    var oHttpChannel = oIOService.newChannel(sRemoteFileName, "", null); 
    oHttpChannel.QueryInterface(chrome.Ci.nsIHttpChannel); 
    oHttpChannel.asyncOpen(oDownloader, oLocalFile);  

} 
DownloadFile("saveAsThis.mp3","http://domain.com/file.mp3"); 
0

2015 तक, इस प्रश्न का उत्तर देने के बाद से प्रबंधन (प्रारंभ, रोकना आदि) के लिए एपीआई बदल गए हैं। नए एपीआई (MDN पर प्रलेखन के लिए लिंक) कर रहे हैं: API to modify Firefox downloads list :

संबंधित मुद्दे