This is an old revision of the document!
Install-Package CefSharp.WinForms
using System; using System.IO; using System.Windows.Forms; using CefSharp; using CefSharp.WinForms; public class MainForm : Form { private ChromiumWebBrowser browser; public MainForm() { InitializeComponent(); InitializeBrowser(); } private void InitializeBrowser() { // 初始化 CEFSharp Cef.Initialize(new CefSettings()); // 創建 ChromiumWebBrowser 控制項 browser = new ChromiumWebBrowser("https://example.com"); this.Controls.Add(browser); browser.Dock = DockStyle.Fill; // 設置下載處理器 browser.DownloadHandler = new DownloadHandler(); } public class DownloadHandler : IDownloadHandler { public void OnBeforeDownload(IWebBrowser browserControl, IBrowser browser, IFrame frame, string url, string suggestedName, string mimeType, bool isNewDownload, IBeforeDownloadCallback callback) { // 指定下載的保存路徑 string downloadPath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments), suggestedName); // 開始下載 callback.Continue(downloadPath, showDialog: false); } public void OnDownloadUpdated(IWebBrowser browserControl, IBrowser browser, IFrame frame, string url, IDownloadItem downloadItem, IDownloadCallback callback) { // 可以在這裡處理下載狀態更新 if (downloadItem.IsComplete) { MessageBox.Show("下載完成: " + downloadItem.FullPath); } } } }
using CefSharp; using System; using System.IO; public class DownloadHandler : IDownloadHandler { private readonly string _downloadFolder; public DownloadHandler(string downloadFolder) { // 設定儲存的資料夾 _downloadFolder = downloadFolder; } public void OnBeforeDownload(IWebBrowser chromiumWebBrowser, IBrowser browser, DownloadItem downloadItem, IBeforeDownloadCallback callback) { // 確保資料夾存在 if (!Directory.Exists(_downloadFolder)) { Directory.CreateDirectory(_downloadFolder); } // 指定下載的保存路徑 string downloadPath = Path.Combine(_downloadFolder, downloadItem.SuggestedFileName); // 開始下載 callback.Continue(downloadPath, showDialog: false); } public void OnDownloadUpdated(IWebBrowser chromiumWebBrowser, IBrowser browser, DownloadItem downloadItem, IDownloadItemCallback callback) { // 在這裡處理下載狀態更新 if (downloadItem.IsComplete) { // 獲取下載的完整路徑和文件名 string filePath = downloadItem.FullPath; string fileName = Path.GetFileName(filePath); // 這裡可以使用其他方式通知用戶,例如使用日誌或其他 UI 元素 Console.WriteLine($"下載完成: {filePath}"); Console.WriteLine($"文件名: {fileName}"); } } }
var downloadHandler = new DownloadHandler(@"C:\Your\Desired\Download\Folder");