2016-11-04 4 views
1

私はGecko組み込みブラウザを使用しており、最終段階でリンクをクリックしてzipファイルをダウンロードします。ブラウザがデフォルトのプログラムでファイルを開くことを除いて、うまくいきます。ブラウザがダウンロードしたzipファイルを開かないようにするにはどうすればよいですか?Firefox/Gecko組み込みブラウザ

答えて

0

あなたはLauncherDialogイベントをサブスクライブし、独自の実装を提供する必要があります。ここに

オリジナルの答え:今後の参考のため https://bitbucket.org/geckofx/geckofx-45.0/issues/15/downloading-files-with-geckofx-45

投稿コード:

private void LauncherDialog_Download(object sender, Gecko.LauncherDialogEvent e) 
{ 
    nsILocalFile objTarget = Xpcom.CreateInstance<nsILocalFile>("@mozilla.org/file/local;1"); 

    using (nsAString tmp = new nsAString(@Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) + "\temp.tmp")) 
    { 
     objTarget.InitWithPath(tmp); 
    } 

    //Save file dialog 
    Stream myStream; 
    SaveFileDialog saveFileDialog1 = new SaveFileDialog(); 

    saveFileDialog1.Filter = "All files (*.*)|*.*"; 
    saveFileDialog1.FilterIndex = 2; 
    saveFileDialog1.RestoreDirectory = true; 
    saveFileDialog1.FileName = e.Filename; 

    if (saveFileDialog1.ShowDialog() == DialogResult.OK) 
    { 
     if ((myStream = saveFileDialog1.OpenFile()) != null) 
     { 
      nsIURI source = IOService.CreateNsIUri(e.Url); 
      nsIURI dest = IOService.CreateNsIUri(new Uri(@saveFileDialog1.FileName).AbsoluteUri); 
      nsAStringBase t = (nsAStringBase)new nsAString(System.IO.Path.GetFileName(@saveFileDialog1.FileName)); 

      nsIWebBrowserPersist persist = Xpcom.CreateInstance<nsIWebBrowserPersist>("@mozilla.org/embedding/browser/nsWebBrowserPersist;1"); 

      nsITransfer nst = Xpcom.CreateInstance<nsITransfer>("@mozilla.org/transfer;1"); 
      nst.Init(source, dest, t, e.Mime, 0, null, persist, false); 

      if (nst != null) 
      { 
       persist.SetPersistFlagsAttribute(2 | 32 | 16384); 
       persist.SetProgressListenerAttribute((nsIWebProgressListener)nst); 
       persist.SaveURI(source, null, null, (uint)Gecko.nsIHttpChannelConsts.REFERRER_POLICY_NO_REFERRER, null, null, (nsISupports)dest, null); 
      } 

      myStream.Close(); 
     } 
    } 
} 
関連する問題