Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/272.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/http/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何获取以字节或千字节为单位的远程文件大小?_C#_Http_Downloadfile - Fatal编程技术网

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

C# 如何获取以字节或千字节为单位的远程文件大小?,c#,http,downloadfile,C#,Http,Downloadfile,我的问题与本问题中的问题相同: 但是我的问题是Content-Length属性包含响应返回的Content-Length头的值,而不是确切的文件大小 我试图使用FileInfo,但它只能将本地文件名作为参数,而不能将远程文件作为参数 谁能告诉我如何获取远程文件的字节或千字节大小 好的,我试试看 首先,请尝试以下代码: //I am assuming Prg.source_path is the url of the file you want // Something like : http:

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

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

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

谁能告诉我如何获取远程文件的字节或千字节大小

好的,我试试看

首先,请尝试以下代码:

//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);
}
请确保您尝试下载的文件的url是该文件的直接url。如果您被重定向到另一个位置,响应的标题将是重定向响应的大小

如果该代码仍然无法为您提供正确的文件大小,我猜您要么被重定向,要么响应确实有缺陷且不准确(这是不可能的,但也是可能的)

你能提供你试图下载的文件的url吗,或者至少提供你正在发送和接收的请求和响应的url吗

编辑2013年4月2日:同时检查此问题:


查看Adrian Grigore的答案,检查是否选中“控制面板->Windows功能->万维网服务->通用HTTP功能->静态内容”。如果没有,请检查它,重新启动IIS(或整个机器,您永远不知道),然后重试。

以及@mdb在其对您链接的问题的回答中所述,如果内容长度不存在或不正确,唯一能准确知道文件大小的方法是下载它。您是否已通过fiddler或任何其他HTTP调试工具检查HTTP响应,以查看内容长度头是否与代码中的值相同?如果匹配该值,则为“是”。我正在下载的文件是5.49MB,内容长度是1448。你能发布一个代码示例,也许是HTTP请求和响应吗?您可以使用您最喜欢的浏览器的调试工具(按F12键并查找网络选项卡)或Fiddler()。HttpWebRequest wrq=(HttpWebRequest)WebRequest.Create(Prg.source_path);HttpWebResponse wrs=null;请尝试{//HttpWebRespose的对象创建wrs=(HttpWebResponse)wrq.GetResponse();//调用以下载该文件,并在不进行身份验证的情况下运行它long l=wrs.ContentLength;}catch(System.Net.WebException protocolError){}这里l包含内容长度,但有些是我想要的总文件大小,即5.49 MB或KBs。什么类型的web服务器承载图像?是否生成图像?“测试”是文件夹还是某个控制器名称?当前我正在使用IIS服务器。图像类型可以是任何人(不特定)。并测试保存图像的文件夹。