当前位置:  开发笔记 > 编程语言 > 正文

用cefsharp winforms下载文件

如何解决《用cefsharpwinforms下载文件》经验,为你挑选了3个好方法。

我正在尝试使用cefsharp winforms从我的应用程序下载一些文件(图像,文件音频或其他内容).我读了其他任何帖子,但似乎没什么用.你有没有示例代码向我展示如何实现cefsharp的下载程序?

当然,当我现在尝试下载一些文件时,没有任何反应.

谢谢



1> 小智..:

要解决此问题,只需下载此处的类DownloadHandler.cs即可 .

之后,将其导入Visual Studio项目,并将此行添加到主窗体的代码中:MyBrowser.DownloadHandler = new DownloadHandler(); 并将其添加到代码的顶部:using CefSharp.Example; 然后尝试从浏览器下载内容,它应该可以工作!


链接到源代码将返回错误404。最好包含源代码内联。

2> crasholino..:

2天后,我终于做到了.对于有相同问题的人来说,这是一个简单的解决方案.如果您正在使用MinimalExample,则必须下载Cefsharp示例(cefsharp-master)解压缩并执行以下操作:

    右键单击您的项目 - >添加现有项目

    在cefsharp-master中导航 - > CefSharp.example - >选择DownloadHandler.cs

    进入您的BrowserForm.cs类并输入以下内容:

    browser.DownloadHandler = new DownloadHandler();

    完成!


我主张提供您使用的代码示例,而不是您遵循的步骤。这个答案不太可能通过“时间的考验”,项目结构的任何细微变化都可能使您的答案无益。

3> Eric Twose..:

我包含以下内容,因为OnBeforeDownloadFired()的实现未在许多关于如何使用DownloadHandler类的在线示例中显示,并且在引用的DownloadHandler.cs中缺少它.

如果下载链接具有目标"_blank",这有助于解决下载文件(例如.mobi电子书)的唠叨问题.如果没有目标,则会触发下载对话框.使用_blank目标,我必须禁止弹出窗口并在浏览器中打开一个新的自定义选项卡,但是当发生这种情况时,不会触发下载对话框.

我认为这是对的.希望它有所帮助,或者至少给你一个开始:

DownloadHandler downer = new DownloadHandler(this);
browser.DownloadHandler = downer;
downer.OnBeforeDownloadFired += OnBeforeDownloadFired;
downer.OnDownloadUpdatedFired += OnDownloadUpdatedFired;

private void OnBeforeDownloadFired(object sender, DownloadItem e)
{
    this.UpdateDownloadAction("OnBeforeDownload", e);
}

private void OnDownloadUpdatedFired(object sender, DownloadItem e)
{
    this.UpdateDownloadAction("OnDownloadUpdated", e);
}

private void UpdateDownloadAction(string downloadAction, DownloadItem downloadItem)
{
    /*
    this.Dispatcher.Invoke(() =>
    {
        var viewModel = (BrowserTabViewModel)this.DataContext;
        viewModel.LastDownloadAction = downloadAction;
        viewModel.DownloadItem = downloadItem;
    });
    */
}

// ...

public class DownloadHandler : IDownloadHandler
{
    public event EventHandler OnBeforeDownloadFired;

    public event EventHandler OnDownloadUpdatedFired;

    MainForm mainForm;

    public DownloadHandler(MainForm form)
    {
        mainForm = form;
    }

    public void OnBeforeDownload(IBrowser browser, DownloadItem downloadItem, IBeforeDownloadCallback callback)
    {
        var handler = OnBeforeDownloadFired;
        if (handler != null)
        {
            handler(this, downloadItem);
        }

        if (!callback.IsDisposed)
        {
            using (callback)
            {
                callback.Continue(downloadItem.SuggestedFileName, showDialog: true);
            }
        }
    }

    public void OnDownloadUpdated(IBrowser browser, DownloadItem downloadItem, IDownloadItemCallback callback)
    {
        var handler = OnDownloadUpdatedFired;
        if (handler != null)
        {
            handler(this, downloadItem);
        }
    }
}

// ...

推荐阅读
虎仔球妈_459
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有