// 可以通过WebView2的CoreWebView2对象的DownloadStarting事件来控制下载文件的默认保存路径
// 下载文件的默认保存路径可以通过CoreWebView2的BrowserExecutableFolder属性来获取
// 下载文件的保存路径可以通过CoreWebView2的DownloadFolder属性来设置
using Microsoft.Web.WebView2.Core;
using System.IO;
public class WebView2DownloadHandler
{
private CoreWebView2 _coreWebView2;
public WebView2DownloadHandler(CoreWebView2 coreWebView2)
{
_coreWebView2 = coreWebView2;
_coreWebView2.DownloadStarting += CoreWebView2_DownloadStarting;
}
private void CoreWebView2_DownloadStarting(object sender, CoreWebView2DownloadStartingEventArgs e)
{
// 设置下载文件的保存路径为浏览器所在目录
string downloadFolder = Path.GetDirectoryName(_coreWebView2.BrowserExecutableFolder);
_coreWebView2.DownloadFolder = downloadFolder;
}
public void Dispose()
{
_coreWebView2.DownloadStarting -= CoreWebView2_DownloadStarting;
}
}
这个是对的
@Adming:
大佬,没有这个事件呀,是我的版本太低吗还是什么
@暖心之阳: 可能是新版本禁用了吧,帮你问了一下ChatGPT。
WebView2 不提供直接设置下载文件的默认保存路径的方法。但是,可以通过以下步骤实现:
1、在 WebView2 中注册 CoreWebView2DownloadStartingEventHandler 事件处理程序。
2、在事件处理程序中获取下载文件的信息,包括文件名和下载链接。
3、使用 System.Windows.Forms.SaveFileDialog 对话框或其他方法,让用户选择保存文件的路径和文件名。
4、使用 System.Net.WebClient 或其他方法,下载文件并保存到用户选择的路径中。
以下是一个示例代码片段:
private async void webView_CoreWebView2DownloadStarting(object sender, CoreWebView2DownloadStartingEventArgs e)
{
// 获取下载文件的信息
string fileName = e.SuggestedFileName;
string downloadUrl = e.Uri;
// 弹出保存文件对话框,让用户选择保存路径和文件名
SaveFileDialog saveFileDialog = new SaveFileDialog();
saveFileDialog.FileName = fileName;
if (saveFileDialog.ShowDialog() == DialogResult.OK)
{
string savePath = saveFileDialog.FileName;
// 下载文件并保存到用户选择的路径中
using (WebClient webClient = new WebClient())
{
await webClient.DownloadFileTaskAsync(downloadUrl, savePath);
}
}
}
@Adming: 谢谢大佬,今天试了下可行
@Adming: 这种情况没有拦截原有下载,相当于下载了两次是什么原因?
@HALDW: 在注册CoreWebView2DownloadStartingEventHandler 事件前,先试着把以前注册的处理方法清除看看。
在注册CoreWebView2DownloadStartingEventHandler 事件前,先试着把以前注册的处理方法清除看看。
这个不算要设置浏览器的下载默认路径吗
– 码上有钱(why) 1年前@码上有钱(why): 不行的,试过了,本机EDG浏览器设置了默认地址,没生效
– 暖心之阳 1年前