如何获取以字节或千字节为单位的远程文件大小?

时间:2013-03-29 09:05:07

标签: c# http downloadfile

我的问题与此问题中的问题相同:

Get http:/…/File Size

但我的问题是Content-Length属性包含随响应返回的Content-Length标头的值,而不是确切的文件大小。

我尝试使用FileInfo,但它只能将本地文件名作为参数 - 而不是远程文件。

有人可以告诉我如何以字节或千字节为单位获取远程文件大小吗?

1 个答案:

答案 0 :(得分:2)

好的我会尝试一下

首先尝试这段代码:

//I am assuming Prg.source_path is the url of the file you want
// Something like : http://www.example.com/my_file.zip
HttpWebRequest wrq = (HttpWebRequest)WebRequest.Create(Prg.source_path); 
//You should be getting only the response header
wrq.Method = "HEAD";

using(var wrs = (HttpWebResponse)wrq.GetResponse()){
    //Do something logic here...
    Console.WriteLine("Content Length is : {0}", wrs.ContentLength);
}

请确保您尝试下载的文件的网址是该文件的 DIRECT 网址。如果您被重定向到其他位置,则响应的标头将是重定向响应的大小。

如果该代码仍然无法为您提供正确的文件大小,我的猜测是您要么被重定向,要么回复确实存在缺陷和不准确(这是不可能的,但可能)。

您能提供您要下载的文件的网址,或者至少提供您发送和获取的请求和回复吗?

编辑02/04/2013 :同时查看此问题:CSS, Javascript and Images have zero length

请参阅Adrian Grigore的答案,检查“控制面板 - > Windows功能 - >万维网服务 - >常见HTTP功能 - >静态内容”。如果没有,检查它,重启IIS(或整个机器,你永远不知道),然后再试一次。