【问题标题】:How to remove Save As dialog from download handler in CefSharp如何从 CefSharp 的下载处理程序中删除另存为对话框
【发布时间】:2020-04-08 19:25:05
【问题描述】:

我想从 CefSharp 中删除 SaveAs 对话框,并希望文件直接保存到指定位置。似乎没有任何问题,请帮助 public void OnBeforeDownload(IWebBrowser chromiumWebBrowser, IBrowser browser, DownloadItem downloadItem, IBeforeDownloadCallback 回调) { OnBeforeDownloadFired?.Invoke(this, downloadItem);

            if (!callback.IsDisposed)
            {
                using (callback)
                {
                    callback.Continue("C:/Users/Wissensquelle/Downloads/bhavansh.txt", showDialog: false);
                }
            }
        }

【问题讨论】:

    标签: c# download cefsharp savefiledialog


    【解决方案1】:

    我想从 CefSharp 中删除 SaveAs 对话框,并希望将文件直接保存到指定位置。

    这是不可能的(开箱即用),如果是这样,这将是一个巨大的设计缺陷,会带来很大的安全问题。

    另一方面,请查看 DownloadHandler 类,特别是 OnBeforeDownload 方法,但是您可以根据自己的喜好更改它(更麻烦):

     callback.Continue(downloadItem.SuggestedFileName, showDialog: true);
    

    收件人:

     callback.Continue(SOMEPATH, showDialog: false);
    

    【讨论】:

    • 我已经尝试过这样做,但在这种情况下没有任何下载。
    • I have already tried doing that but in that case nothing downloads,如果您不显示问题所在、您尝试过的内容等,将很难提供帮助。请更新您的帖子以包含我们可以测试的可重现代码,以便我们为您提供帮助进一步。
    • 我已经更新了我的问题,你可以参考那里的代码。
    • 如果我将 showDialog 更改为 false,则不会下载任何内容
    【解决方案2】:

    我的解决方案是基于

    https://github.com/cefsharp/CefSharp.MinimalExample

    Getting HTML from Cefsharp Browser

    我只是结合了这些。保存 CefSharp 浏览器实例的 html 内容如下:

     browser = new ChromiumWebBrowser("www.google.com");
     //
     // .. etc etc
     // ..
     private async getSource()
     { 
       string source = await browser.GetBrowser().MainFrame.GetSourceAsync();
       string f = @"c:\temp\my.html";
       StreamWriter wr = new StreamWriter(f, false, System.Text.Encoding.Default);
       wr.Write(source);
       wr.Close();
     }
    

    要对其进行测试,请使用上述事件,或滚动您自己的文件菜单:添加一个保存项目。添加 Click 事件并使其异步。现在像这样调用 getSource():

     private async void saveToolStripMenuItem_Click(object sender, EventArgs e)
     {
       await getSource();
     }
    

    【讨论】:

    • 我保存的文件是文本文件而不是 HTML 文件。
    • 嗨 Bhavansh,要将内容保存为文本,在我的第 8 行示例中,您为保存的文件提供扩展名 .TXT...如果您只需要文本信息而不需要 HTML,则应删除标签。参考stackoverflow.com/questions/19523913/…
    猜你喜欢
    • 2017-10-14
    • 2013-10-13
    • 1970-01-01
    • 2021-03-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-03
    相关资源
    最近更新 更多