【问题标题】:Automatically download an xml file from URI with download popup使用下载弹出窗口自动从 URI 下载 xml 文件
【发布时间】:2013-07-30 15:13:13
【问题描述】:

ASP.NET MVC 4 剃刀:

我已经为此工作了一段时间,所以如果我遗漏了一些明显的东西,我深表歉意,但我将非常感谢可以提供的任何帮助。

简而言之,我要做的是使用 C# 从 URI 下载 XML 文件。它应该很简单,但是 URI 会导致一个空白页面,其中包含一个下载提示弹出窗口,其中填充了一个动态创建的文件名。

由于其机密性,我无法提供 URI,但这是我一直在玩弄的代码。 (原谅我对这件事的无知,这是我第一次尝试这样的事情)

byte[] data;
using (WebClient Client = new WebClient())
{
    data = Client.DownloadData(uriString + fileString);
}
File.WriteAllBytes(dirString + fileString, data);

我也试过了:

using (WebClient Client = new WebClient())
{
    Client.DownloadFile(uriString + fileString, dirString + fileString);
}

说实话,这段代码并不适合我。下载的文件不正确。 XML 文件似乎包含从网页下载它们的代码,如果我尝试使用图像之类的东西,图像就会损坏。因此,再次感谢任何帮助。

提前致谢!

【问题讨论】:

  • "The XML files appear to contain the code from the webpage they've been downloaded from" - 你确定 URI 是正确的吗?它是您要查找的实际文件的 URI,还是只是显示该文件的页面?目标网站在提供文件之前是否需要进一步操作?如果 URI 是敏感的,你能提供一个我们可以看到的相同示例吗? (另外,这与 ASP.NET、MVC 4 和/或 Razor 有什么关系?)
  • 您好,感谢您的快速回复。 URI 指向一个空白页面,该页面启动相关文件的下载弹出窗口。以前我们会从这个弹出窗口手动下载文件,但是,我正在尝试自动化该过程以提高易用性。当我发现有相同作用的东西时,我会发布一个链接。我提到了 ASP.NET 等,以防它可能是重要信息,有时我看到修复需要一点 JavaScript 或类似的东西。
  • "a blank page that initiates a download popup" - 我很好奇这个“弹出窗口”是什么以及内容是如何实际提供的。您可以做的一件事是在某些浏览器调试工具(如 Firebug 或 Chrome 开发人员工具)中捕获实际的 HTTP 请求和响应,并查看此交互实际在做什么。你正在寻找的是一个 HTTP 响应,它只是文件内容本身,但听起来你得到的是一些 HTML,它以某种方式启动了对文件的第二个请求。
  • 我会用 Firebug 来看看。谢谢,这是个好主意。这是我发现的显示 URI 行为的最接近的示例,文件类型除外。 Firefox_Setup.exe 的链接link
  • 之前的链接好像坏了,应该只是暂时的。复制去here。右键单击“下载”并在新选项卡中使用链接地址将显示示例行为。似乎几乎不可能使用 Firebug 从实际 URI 中获取必要的信息。与此同时,我正在研究其他选择。但是当找到解决方案时,我会更新它。

标签: c# asp.net-mvc razor webclient


【解决方案1】:

您使用的 URI 可能是错误的。您正在使用打开弹出页面的 URI。弹出页面应该对动态生成的文件执行另一个 GET。

要自动执行此过程,您应该使用 WebRequest 来获取弹出页面的内容。抓取页面内容以获取下载文件的实际 URL。然后使用您编写的代码下载文件。

var request = WebRequest.Create("PopupUrl");
var response = request.GetResponse();
string url = GetUrlFromResponseByRegExOrXMLParsing();
var client = new WebClient();
webClient.DownloadFile(url, filePath);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-10-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-11
    • 1970-01-01
    • 2019-03-25
    相关资源
    最近更新 更多