一尘不染

如何从http标头获取文件大小

c#

下载前,我想获取http:/…/文件的大小。该文件可以是网页,图像或媒体文件。可以使用HTTP标头完成此操作吗?如何仅下载文件HTTP标头?


阅读 335

收藏
2020-05-19

共1个答案

一尘不染

是的,假设您正在与之通信的HTTP服务器支持/允许这样做:

public long GetFileSize(string url)
{
    long result = -1;

    System.Net.WebRequest req = System.Net.WebRequest.Create(url);
    req.Method = "HEAD";
    using (System.Net.WebResponse resp = req.GetResponse())
    {
        if (long.TryParse(resp.Headers.Get("Content-Length"), out long ContentLength))
        {
            result = ContentLength;
        }
    }

    return result;
}

如果不允许使用HEAD方法,或者服务器答复中没有Content-
Length标头,则确定服务器上内容大小的唯一方法是下载内容。由于这不是特别可靠,因此大多数服务器将包含此信息。

2020-05-19