Hatena::ブログ(Diary)

Firefoxアドオンとか このページをアンテナに追加 RSSフィード

ホームページ
 Firefoxアドオンの作り方
 Read All Tweets(タイムラインを逆順に)
 検索ボックス自動入力(学習機能付き)
 定期的にチェック!

2011-05-29

アドオンからダウンロードを行う方法

以下の関数でダウンロードリストに追加できます。

function  addDownload(from, to, title)
{
   var dm    = Components.classes["@mozilla.org/download-manager;1"].getService(Components.interfaces.nsIDownloadManager);

   var ioService  = Components.classes["@mozilla.org/network/io-service;1"].getService(Components.interfaces.nsIIOService);
   var uri = ioService.newURI(from, null , null);
   var url = uri.QueryInterface(Components.interfaces.nsIURL);

   var file = Components.classes['@mozilla.org/file/local;1'].createInstance(Components.interfaces.nsILocalFile);
   file.initWithPath(to);
   var fileURI = ioService.newFileURI(file);

   var nsIWBP = Components.interfaces.nsIWebBrowserPersist;
   var persist = Components.classes['@mozilla.org/embedding/browser/nsWebBrowserPersist;1'].createInstance(Components.interfaces.nsIWebBrowserPersist);
   var flags = nsIWBP.PERSIST_FLAGS_NO_CONVERSION |
           nsIWBP.PERSIST_FLAGS_REPLACE_EXISTING_FILES |
           nsIWBP.PERSIST_FLAGS_BYPASS_CACHE;
         
   persist.persistFlags = flags;

   
   var download = dm.addDownload ( 0 , uri , fileURI , title || from, null , null , null , null, persist );
   persist.progressListener = download;
   persist.saveURI(uri, null, null, null, "", fileURI);
}

サンプル:

addDownload("http://sample.com/sample.html", "C:\\Users\\username\\Documents\\sample.html", "タイトル");

参考にしたページ

add downloads to download manager • mozillaZine Forums

関連ページ

nsIDownloadManager - MDC Docs

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証

トラックバック - http://d.hatena.ne.jp/masahal/20110529/1306640769