首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在UWP WebView2上下载文件?

如何在UWP WebView2上下载文件?
EN

Stack Overflow用户
提问于 2022-03-08 08:33:00
回答 2查看 569关注 0票数 2

我正在尝试支持UWP WebView2上的文件下载。

不确定我是否做错了什么,或者这是否是一个错误,但我一直将状态更改更新为UserCanceled中断。

下面是我在主页上测试它的方式:

代码语言:javascript
运行
复制
public MainPage()
{
    this.InitializeComponent();
    wv2.EnsureCoreWebView2Async().AsTask().ContinueWith(async (task) =>
    {
        await Dispatcher.RunAsync(CoreDispatcherPriority.Normal,
        () =>
        {
            wv2.CoreWebView2.DownloadStarting += OnDownloadStarting;
            wv2.CoreWebView2.Navigate("http://demo.borland.com/testsite/downloads/downloadfile.php?file=dotNetFx40_Full_x86_x64.exe&cd=attachment+filename");
        });
    });
}

private void OnDownloadStarting(Microsoft.Web.WebView2.Core.CoreWebView2 sender, Microsoft.Web.WebView2.Core.CoreWebView2DownloadStartingEventArgs args)
{
    Trace.WriteLine("DownloadStarting");
    var downloadOp = args.DownloadOperation;
    args.DownloadOperation.StateChanged += (sender2, args2) =>
    {
        var state = downloadOp.State;
        switch (state)
        {
            case Microsoft.Web.WebView2.Core.CoreWebView2DownloadState.InProgress:
                Trace.WriteLine("Download StateChanged: InProgress");
                break;
            case Microsoft.Web.WebView2.Core.CoreWebView2DownloadState.Completed:
                Trace.WriteLine("Download StateChanged: Completed");
                break;
            case Microsoft.Web.WebView2.Core.CoreWebView2DownloadState.Interrupted:
                Trace.WriteLine("Download StateChanged: Interrupted, reason: " + downloadOp.InterruptReason);
                break;
            }
        };
    }

我还尝试将ResultFilePath设置为TemporaryFolder或用户的DownloadsFolder,并为应用程序提供了这些受限功能-- <rescap:Capability Name="broadFileSystemAccess" /><rescap:Capability Name="runFullTrust" />

但是,对于相同的中断UserCanceled错误,我始终得到一个单一的状态更新。

下面是一个演示问题的示例项目:https://github.com/nirbil/WebView2FileDownload

有什么想法吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-03-09 02:44:04

但是,对于相同的中断UserCanceled错误,我始终得到一个单一的状态更新。

这是已知问题的WebView2下载文件。我发现edge成员已经确认了这一点。我们有一个已知的问题,下载还不能在UWP中工作(由于文件权限)。我们已经在进行修复,并将在下个月内进行测试。我正在将我们现有的工作与这个问题联系起来,以跟踪它何时完成。谢谢!请注意随后的更新。

票数 0
EN

Stack Overflow用户

发布于 2022-07-24 11:34:06

请参阅有关此问题的进展这里。这是从上面的链接复制下载所需的当前过程。

  1. 从- https://www.microsoftedgeinsider.com/en-us/download安装edge开发通道
  2. 请注意该通道的安装路径,当前-‘C:\程序文件(x86)\Microsoft\Edge Dev\Application\105.0.1300.0’
  3. 将UWP WebView2包更新为最新的预发布版本
  4. 在应用程序激活和webview初始化之前设置以下环境变量 Environment.SetEnvironmentVariable("WEBVIEW2_ADDITIONAL_BROWSER_ARGUMENTS","--edge-webview-optional-enable-uwp-regular-downloads");

代码语言:javascript
运行
复制
Environment.SetEnvironmentVariable("WEBVIEW2_BROWSER_EXECUTABLE_FOLDER", @"C:\Program Files (x86)\Microsoft\Edge Dev\Application\105.0.1300.0");
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71392048

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档