【问题标题】:Downloading files via C# from a php site [closed]通过 C# 从 php 站点下载文件 [关闭]
【发布时间】:2013-09-29 11:16:35
【问题描述】:

该网站提供的链接为http://www.example.com/download.php?id=53979。我知道这是一个 pdf 文件,我想通过 C# 程序下载它。这可能吗?如果可以,怎么做?

【问题讨论】:

  • 是的,当链接类似于example.com/asd.pdf 但在这种情况下不可用。
  • URL 的文本没有任何区别。当您尝试下载文件时,它以什么方式“不起作用”?
  • 它下载一个html文件。
  • 这意味着服务器提供的文件不正确,或者您的 URL 错误。客户端只知道服务器发送的内容。你有这方面的例子吗?

标签: c# php pdf download web-client


【解决方案1】:

为了下载文件,你只需要使用WebClient对象like in the question referenced above

using (var client = new WebClient())
    client.DownloadFile("http://www.datasheet4u.com/download.php?id=53979", "datasheet.pdf");

使您的情况略有不同的原因与使用 PHP 或类似内容编写的服务器无关。您提供的链接 (http://www.datasheet4u.com/datasheet/L/M/7/LM741_NationalSemiconductor.pdf.html) 在提供文件时似乎正在检查 Referer 标头。这可能是他们试图阻止您尝试做的事情,但实际上并没有阻止它。

您需要做的就是在请求中添加一个Referer 标头。像这样的:

using (var client = new WebClient())
{
    client.Headers.Add("Referer","http://www.datasheet4u.com/datasheet/L/M/7/LM741_NationalSemiconductor.pdf.html");
    client.DownloadFile("http://www.datasheet4u.com/download.php?id=53979", "datasheet.pdf");
}

下载文件的方法还是一样的。服务器只要求您在请求中发送一条额外的信息。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-06
    • 2015-09-28
    • 1970-01-01
    • 2018-04-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多