如何在 UWP 中的 Web 视图中打开保存文件对话框



我已经接管了一个 UWP 项目,必须解决下载按钮的问题。在网站上,有一个指向软件包的链接。EXE 可以使用浏览器下载。 在我的网络视图中,据我了解,我将无法直接下载到磁盘,但应该可以打开标准浏览器来接管该部分。我设法从我的网络视图中在标准浏览器中打开 PDF。这对我和我的菜鸟技能来说已经很棘手了,但现在它正在发挥作用。我尝试了对 EXE 文件相同的操作,但这似乎不起作用。这是我到目前为止所做的:

private async void WebView1_NewWindowRequested(WebView sender, WebViewNewWindowRequestedEventArgs args)
{
if (args.Uri != null && args.Uri.OriginalString.ToLower().Contains(".pdf"))
{
return;
}
else
{ webView1.Navigate(args.Uri); }
args.Handled = true;
}

所以这适用于 PDF,但是当我对 EXE 做同样的事情时,它不会做任何事情(可见(。

对此有什么想法吗?

如何在 UWP 中打开 Web 视图外的保存文件对话框

您可以侦听NavigationStarting事件处理程序,如果 uri 包含.exe您可以创建BackgroundDownloader来下载 exe 文件特定的文件夹。

private async void TestWebView_NavigationStarting(WebView sender, WebViewNavigationStartingEventArgs args)
{
if (args.Uri != null && args.Uri.OriginalString.ToLower().Contains(".exe"))
{
try
{
StorageFile destinationFile = await KnownFolders.PicturesLibrary.CreateFileAsync(
"test.exe", CreationCollisionOption.GenerateUniqueName);
BackgroundDownloader downloader = new BackgroundDownloader();
DownloadOperation download = downloader.CreateDownload(args.Uri, destinationFile);
await download.StartAsync();
}
catch (Exception ex)
{
}
}
}

马霍博解决方案

string Link = args.Uri.Segments.Last();
try
{
var messagedialog = new MessageDialog("Saving File " + Link + " to your Download folder.");
await messagedialog.ShowAsync();
StorageFile destinationFile = await DownloadsFolder.CreateFileAsync(Link, CreationCollisionOption.GenerateUniqueName);
BackgroundDownloader downloader = new BackgroundDownloader();
DownloadOperation download = downloader.CreateDownload(args.Uri, destinationFile);
await download.StartAsync();
}
catch (Exception e)
{

}

最新更新