2012-01-27 5 views
0

私はFacebookの現在のページから写真をダウンロードするFirefox拡張機能を開発しています。 デフォルトのダウンロードディレクトリをXに変更する方法があり、より好ましくはユーザーに入力するように要求する方法があるのだろうかと思います。 おかげfirefoxでダウンロードフォルダのデステンションを変更するには?

+0

uはプログラムによるヘルプや何 –

+0

yesにしたい、私はsaveURLは、ファイルを保存するためのものと同じようにする方法を探しています。 –

答えて

1

この情報は、設定ファイルに保存され、about:config下で観察することができます。好みbrowser.download.useDownloadDirbrowser.download.dirに設定されたダウンロードディレクトリをtrueするように設定されている場合は、自動的に使用されています。この変数がfalseに設定されている場合、ブラウザは最初のダイアログで選択browser.download.lastDirに設定されたディレクトリで、どこファイルを保存するようにユーザーに要求します。しかし

、あなたはおそらく、これらのプリファレンスを使用したいのではなく、ユーザーがダウンロードディレクトリを選択してはいけない拡張子を書いている場合。あなたはこれらの線に沿って、そのためのnsIFilePickerを使用します。

var filePicker = Components.classes["@mozilla.org/filepicker;1"] 
          .createInstance(Components.interfaces.nsIFilePicker); 
filePicker.init(window, "Please choose a download directory", filePicker.modeGetFolder); 
if (filePicker.show() == 0) 
    window.alert("Directory chosen: " + filePicker.file.path); 
1
//give your file details in this line 
downloadFile(title, url, fileType); 

// Don't change anything below if you don't know what it does 

function getDownloadFile(defaultString, fileType) 
{ 
    var nsIFilePicker = Components.interfaces.nsIFilePicker; 

    var fp = Components.classes["@mozilla.org/filepicker;1"].createInstance(nsIFilePicker); 
    fp.init(window, "Save As", nsIFilePicker.modeSave); 
    try { 
     var urlExt = defaultString.substr(defaultString.lastIndexOf(".")+1, 3); 
     if (urlExt!=fileType) defaultString += "." + fileType 
    }catch(ex){} 

    fp.defaultString = defaultString; 

    fp.appendFilter(fileType, "*." + fileType); 
    var rv = fp.show(); 
    if (rv == nsIFilePicker.returnOK || rv == nsIFilePicker.returnReplace) { 
     var file = fp.file; 
     var path = fp.file.path; 
     return file; 
    } 
    return null; 
} 
function downloadFile(title, url, fileType) 
{ 
    var file = getDownloadFile(title, fileType); 

    var persist = Components.classes['@mozilla.org/embedding/browser/nsWebBrowserPersist;1'].createInstance(Components.interfaces.nsIWebBrowserPersist); 
    var ios = Components.classes['@mozilla.org/network/io-service;1'].getService(Components.interfaces.nsIIOService); 
    var uri = ios.newURI(url, null, null); 

    var target = ios.newFileURI(file) 
    var xfer = Components.classes["@mozilla.org/transfer;1"] 
          .createInstance(Components.interfaces.nsITransfer); 
    xfer.init(uri, target, "", null, null, null, persist); 
    persist.progressListener = xfer; 
    persist.saveURI(uri, null, null, null, null, file); 

} 
関連する問題