如何在c#中检查url是文件类型还是网页类型?

时间:2016-05-03 17:15:37

标签: c# url windows-applications

我用C#应用程序编写了抓取网站。 现在我有一个问题 我可以确定此网址指向文件或网页! 如何在不发送请求的URL的情况下解决此问题?

3 个答案:

答案 0 :(得分:2)

您不能不发送请求...因为统一资源定位器无法与文件系统路径相比。例如,虽然以下网址以.jpg结尾,但显然不是图片:

  

google.com/search?q=asd.jpg

如果您决定改变主意,以下是这样的:

public bool IsFileContent(string url)
{
    var request = HttpWebRequest.Create(url);
    request.Method = "HEAD";

    switch (request.GetResponse().ContentType)
    {
        case "image/jpeg": return true;
        case "text/plain": return true;
        case "text/html": return false;

        default: // TODO: add more case as needed
            throw new ArgumentOutOfRangeException();
    }
}

答案 1 :(得分:1)

你要做的事几乎是不可能的。网址不会“导致文件或网页”。它们被路由到请求处理程序。请求处理程序可以返回HTML响应或文件下载或其他类型的响应。某些扩展名如“.html”或“.pdf”意味着响应的类型应该是什么。但是URL可能有一个不指示响应类型的扩展名,或者(在此页面上)根本没有扩展名。

您无法仅通过URL确定HTTP请求的响应类型。

答案 2 :(得分:-1)

在没有发送任何请求的情况下,我唯一能想到的就是检查url末尾的文件扩展名。这不会给您100%的成功率,因为​​您可以使用不以扩展名结尾的网址发送文件。这就是说通常的做法是让文件url以扩展名

结束文件名