从Web下载之前获取图像文件的大小

我正在使用控制台应用程序中的以下代码从Web下载图像文件。

WebClient client = new WebClient(); client.DownloadFile(string address_of_image_file,string filename); 

代码运行得非常好。

我想知道是否有一种方法可以在下载之前获得此图像文件的大小。

PS-实际上我已经编写了代码来制作一个爬行器,它可以在站点下载图像文件。 所以我事先并不知道它的大小。 我所拥有的只是从网页源中提取的文件的完整路径。

这是一个简单的例子,如果您有不同扩展名的文件,如.GIF,.JPG等,您可以尝试创建变量或将代码包装在Switch Case Statement中

 System.Net.WebClient client = new System.Net.WebClient(); client.OpenRead("http://sofzh.miximages.com/c%23/MyImage.jpg"); Int64 bytes_total= Convert.ToInt64(client.ResponseHeaders["Content-Length"]) MessageBox.Show(bytes_total.ToString() + " Bytes"); 

如果Web服务为您提供Content-Length HTTP标头,那么它将是图像文件大小。 但是,如果Web服务想要向您“流式传输”数据(使用Chunk编码),那么在下载整个文件之前您将无法知道。

您可以使用HttpWebRequest查询文件的HEAD方法并检查响应中的Content-Length

你应该看看这个答案: C#获取http:/ … /文件大小你的问题在哪里得到充分解释。 它使用HEAD HTTP请求来检索文件大小,但在读取响应流之前,您还可以在GET请求期间读取“Content-Length”标头。