日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > HTML >内容正文

HTML

GeckoFx v45浏览器控件实现文件下载出现异常的解决办法

發布時間:2024/1/18 HTML 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 GeckoFx v45浏览器控件实现文件下载出现异常的解决办法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

最近用到了GeckoFx的下載功能, 從網絡上找到了一些代碼復制運行, 發現有時候會報COM調用錯誤的異常, 經查找發現是GeckoFx的接口發生更新了, 之前的接口已經棄用, 下面貼上經測試可用代碼:

首先先 注冊下載事件:

Gecko.LauncherDialog.Download += this.LauncherDialog_Download;

然后實現下載事件方法:

private void LauncherDialog_Download(Object sender, Gecko.LauncherDialogEvent e) {uint flags = (uint)nsIWebBrowserPersistConsts.PERSIST_FLAGS_NO_CONVERSION |(uint)nsIWebBrowserPersistConsts.PERSIST_FLAGS_REPLACE_EXISTING_FILES |(uint)nsIWebBrowserPersistConsts.PERSIST_FLAGS_BYPASS_CACHE;SaveFileDialog dlg = new SaveFileDialog{FileName = e.Filename};if (dlg.ShowDialog(this.ParentForm) == DialogResult.OK){nsIURI source = IOService.CreateNsIUri(e.Url);nsIURI dest = IOService.CreateNsIUri(new Uri(dlg.FileName).AbsoluteUri);nsAStringBase t = new nsAString(Path.GetFileName(dlg.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(flags);persist.SetProgressListenerAttribute(nst);try{persist.SaveURI(source, null, null, (uint)Gecko.nsIHttpChannelConsts.REFERRER_POLICY_NO_REFERRER, null, null, (nsISupports)dest, null);GuiHelper.MsgBox($"文件[{Path.GetFileName(dlg.FileName)}]已下載成功!");}catch (Exception ex){GuiHelper.MsgBox($"下載失敗: {ex.Message}.");}return;}GuiHelper.MsgBox("下載失敗: 服務器無響應...");} }

與老版本代碼的區別是多了下面兩行代碼:

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

如果沒有這兩行代碼就會有很大幾率出現異常...

總結

以上是生活随笔為你收集整理的GeckoFx v45浏览器控件实现文件下载出现异常的解决办法的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。