我正在使用控制台应用程序中的以下代码从Web下载图像文件。
WebClient client = new WebClient();
client.DownloadFile(string address_of_image_file,string filename);
代码运行得很好。
我想知道在下载之前是否有办法获取此图片文件的大小。
PS-实际上我已编写代码来制作一个在网站上下载图像文件的爬虫。所以我事先并不知道它的大小。我所拥有的只是从网页源中提取的完整文件路径。
答案 0 :(得分:12)
以下是您可以尝试的简单示例 如果您有不同扩展名的文件,如.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");
答案 1 :(得分:6)
如果网络服务为您提供Content-Length HTTP标头,那么它将是图像文件大小。但是,如果Web服务想要向您“流式传输”数据(使用Chunk编码),那么在下载整个文件之前您将无法知道。
答案 2 :(得分:2)
您可以使用HttpWebRequest查询文件的HEAD方法并检查响应中的Content-Length
答案 3 :(得分:0)
您应该看一下这个答案:C# Get http:/…/File Size您的问题已得到充分解释。它使用HEAD HTTP请求来检索文件大小,但在读取响应流之前,您还可以在GET请求期间读取“Content-Length”标头。
答案 4 :(得分:0)
您可以使用以下代码:
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;
}