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

use*_*754 12 .net c#

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

WebClient client = new WebClient();
client.DownloadFile(string address_of_image_file,string filename);
Run Code Online (Sandbox Code Playgroud)

代码运行得非常好.

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

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

Met*_*Man 17

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

System.Net.WebClient client = new System.Net.WebClient();
client.OpenRead("http://someURL.com/Images/MyImage.jpg");
Int64 bytes_total= Convert.ToInt64(client.ResponseHeaders["Content-Length"])
MessageBox.Show(bytes_total.ToString() + " Bytes");
Run Code Online (Sandbox Code Playgroud)


Eth*_*anB 6

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


小智 5

您可以使用此代码:

using System.Net;

public long GetFileSize(string url)
{
    long result = 0;

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

    return result;
}
Run Code Online (Sandbox Code Playgroud)