2011-06-09 122 views
2

我有這個功能來下載文件:下載窗口中的firefox下載文件 - Firefox擴展!

function downloadFile(httpLoc) 
{ 
try { 
    // new obj_URI object 
    var obj_URI = Components.classes["@mozilla.org/network/io-service;1"].getService(Components.interfaces.nsIIOService).newURI(httpLoc, null, null); 

    // new file object 
    var obj_TargetFile = Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsILocalFile); 

    obj_TargetFile.initWithPath("d:\\te.zip"); 

    if(!obj_TargetFile.exists()) { 
     obj_TargetFile.create(0x00,0644); 
    } 

    var obj_Persist = Components.classes["@mozilla.org/embedding/browser/nsWebBrowserPersist;1"].createInstance(Components.interfaces.nsIWebBrowserPersist); 



    obj_Persist.progressListener = { 
     onProgressChange : function(aWebProgress, aRequest, aCurSelfProgress, aMaxSelfProgress, aCurTotalProgress, aMaxTotalProgress){ 
      var percentComplete = (aCurTotalProgress/aMaxTotalProgress)*100; 
      var ele = document.getElementById("progress element"); 
      ele.innerHTML = percentComplete + "%"; 
     }, 
     onStateChange: function(aWebProgress, aRequest, aStateFlags, aStatus) { 
     } 
    } 

    // with persist flags 
    const nsIWBP = Components.interfaces.nsIWebBrowserPersist; 
    const flags = nsIWBP.PERSIST_FLAGS_REPLACE_EXISTING_FILES; 
    obj_Persist.persistFlags = flags | nsIWBP.PERSIST_FLAGS_FROM_CACHE; 

    //save file to target 
    obj_Persist.saveURI(obj_URI, null, null, null, "", obj_TargetFile); 
} 
catch (e) 
{ 
    alert(e); 
} 
} 

文件被下載,但我沒有看到它在Firefox的下載窗口。我如何讓文件出現在下載窗口中並查看進度?

回答

2

This應該給你做這個正確的方式一個良好的開端。

+0

雖然此鏈接可以回答這個問題,這是[更好地包括這裏的答案的關鍵部位(http://meta.stackexchange.com/questions/8231/are-answers-that-just-contain-鏈接 - 其他地方 - 真正的好答案/ 8259#8259)並提供鏈接以供參考。如果鏈接頁面更改,則僅鏈接答案可能會失效。如果目標網站無法訪問或永久離線,請始終引用重要鏈接中最相關的部分。 – Makyen 2016-07-08 19:13:42

+0

@Makyen,我不認爲這些是標準的,當我五年前回答了這個:)我還鏈接到一個特定的修訂所以它不會死。 – sdwilsh 2016-07-20 00:40:11

+0

是的,這些年來標準已經發生了變化。然而,現行的標準被追溯應用,因爲如果舊鏈接的投票答案只是鏈接,就會被刪除。雖然我並不同意這種看法,([我在那個薈萃了高,投票,死鏈接的答案應該有聯繫後改爲檔案館(http://meta.stackoverflow.com/questions/323508/what-to-do-與破碎,但-高度upvoted鏈接只-答案/ 323562#323562)),現實情況是,如果他們被標記把它們在低質量的帖子審覈隊列這樣的答案被刪除。我沒有舉出這個答案給它一個更新的機會。 – Makyen 2016-07-20 00:53:46