如何从HTTP标头获取文件大小
时间:2020-03-06 14:37:04 来源:igfitidea点击:
下载前,我想获取http:/.../文件的大小。该文件可以是网页,图像或者媒体文件。可以使用HTTP标头完成此操作吗?如何仅下载文件HTTP标头?
解决方案
Can this be done with HTTP headers?
是的,这是要走的路。如果提供了信息,则该信息位于" Content-Length"的标题中。但是请注意,不一定是这种情况。
可以仅使用" HEAD"请求而不是" GET"来下载标头。也许以下代码会有所帮助:
HttpWebRequest req = (HttpWebRequest)WebRequest.Create("http://example.com/"); req.Method = "HEAD"; long len; using(HttpWebResponse resp = (HttpWebResponse)(req.GetResponse())) { len = resp.ContentLength; }
注意HttpWebResponse对象上内容长度的属性-无需手动解析Content-Length标头。
是的,假设我们正在与之通信的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标头,则确定服务器上内容大小的唯一方法是下载内容。由于这不是特别可靠,因此大多数服务器将包含此信息。