如何从http头获取文件大小

我想在下载之前获取http:/…/文件的大小。 该文件可以是网页,图像或媒体文件。 这可以通过HTTP头来完成吗? 如何下载文件HTTP头?

是的,假设您正在交谈的HTTP服务器支持/允许:

System.Net.WebRequest req = System.Net.HttpWebRequest.Create("http://stackoverflow.com/robots.txt"); req.Method = "HEAD"; using (System.Net.WebResponse resp = req.GetResponse()) { int ContentLength; if(int.TryParse(resp.Headers.Get("Content-Length"), out ContentLength)) { //Do something useful with ContentLength here } } 

如果不允许使用HEAD方法,或者服务器回复中不存在Content-Length标头,则确定服务器上内容大小的唯一方法是下载它。 由于这不是特别可靠,大多数服务器都会包含这些信息。

这可以通过HTTP头来完成吗?

是的,这是要走的路。 如果提供了这些信息,它就在Content-Length的头部。 但请注意,情况并非如此。

只能下载头文件可以使用HEAD请求来代替GET 。 也许下面的代码有助于:

 HttpWebRequest req = (HttpWebRequest)WebRequest.Create("http://example.com/"); req.Method = "HEAD"; HttpWebResponse resp = (HttpWebResponse)(req.GetResponse()); long len = resp.ContentLength; 

注意HttpWebResponse对象的内容长度属性 – 不需要手动parsingContent-Length头。

 WebClient webClient = new WebClient(); webClient.OpenRead("http://stackoverflow.com/robots.txt"); long totalSizeBytes= Convert.ToInt64(webClient.ResponseHeaders["Content-Length"]); Console.WriteLine((totalSizeBytes));