如何从 CefSharp 的下载处理程序中删除另存为对话框

How to remove Save As dialog from download handler in CefSharp

我想从 CefSharp 中删除 SaveAs 对话框并希望文件直接保存到指定的 location.Nothing 似乎可行请帮助 public void OnBeforeDownload(IWebBrowser chromiumWebBrowser, IBrowser browser, DownloadItem下载项目、IBeforeDownloadCallback 回调) { OnBeforeDownloadFired?.Invoke(this, downloadItem);

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

I want to remove the SaveAs dialog from CefSharp and want the file to save directly to the specified location.

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

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

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

收件人:

 callback.Continue(SOMEPATH, showDialog: false);

我的解决方案基于

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();
 }