【问题标题】:C# Skip "Download File" dialog in WebBbrowser controlC# 在 WebBbrowser 控件中跳过“下载文件”对话框
【发布时间】:2016-03-31 09:40:21
【问题描述】:

我正在创建一个 Windows 窗体应用程序,用于自动从公司站点下载文件。文件的 URL 被 POST、GET 请求隐藏,它们的 URL 就像

https://domain.com/download.aspx?DocID=1431098

点击链接后会出现以下对话框:

有没有办法跳过这个对话框并将文件保存到客户端机器上的路径?

【问题讨论】:

  • 您愿意在不通知用户的情况下进行此类活动吗?这是不受欢迎的行为,因此服务器端不允许这样做。您也许可以从 Web 浏览器客户端控制它(如果配置支持)
  • 它是一个自动化工具。因此用户不必手动执行此操作。用户被告知如果应用程序启动会发生什么,它必须使用指定的请求# 访问公司网站并从该请求中获取所有文件。 WebBrowser 控件是System.Windows.Forms.WebBrowser

标签: c# dialog download skip


【解决方案1】:

当您点击链接时,您实际上是在启动打开链接的默认程序,即您的默认浏览器。

随后出现的提示是一种确保用户知道浏览器正在下载什么文件的方法。您可以从浏览器设置中将其关闭。例如:在 chrome 中,它是 Settings>Advanced Settings>Download 但我怀疑这是你想要做的。

如果您尝试从公司 URL 下载文档,您可以使用 C# 下载 this stackoverflow answer 中的内容,但您必须确保该 URL 直接指向您想要的内容,而不是中间页面.

*更新

要从安全域获取数据,请尝试设置您登录公司网站的用户名和密码:

Client.Credentials = new System.Net.NetworkCredential("uname", "pass");

【讨论】:

  • 您建议对默认浏览器进行此设置并将所有文件保存在一个目录中?问题是文件的直接 URL 不可见。 (请告诉我是否有办法从该对话框中找到它或通过 POST/GET 过程获取它。
  • 试过了,但它不起作用,因为这不是网络服务器。它是一个基于 Web 的应用程序,登录页面由客户端的新会话调用 - 安全屏障。如果以登录方式登录以获取文件 URL,我们将返回死循环。
【解决方案2】:
Thread th = new Thread(() =>
                {
                    System.Threading.Thread.Sleep(10000);
                    SendKeys.SendWait("{Tab}");
                    SendKeys.SendWait("{Tab}");
                    SendKeys.SendWait("{Tab}");
                    SendKeys.SendWait("{Enter}");
                    System.Threading.Thread.Sleep(5000);
                    SendKeys.SendWait("{Tab}");
                    SendKeys.SendWait("{Tab}");
                    SendKeys.SendWait("{Tab}");
                    SendKeys.SendWait("{Enter}");
                });
                th.SetApartmentState(ApartmentState.MTA);
                th.Start();

单击下载或相关按钮后插入此代码。它将完成您的自动化过程

【讨论】:

    猜你喜欢
    • 2013-12-11
    • 2015-07-31
    • 2013-08-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多