我的问题与此问题中的问题相同:
但我的问题是该Content-Length
属性包含Content-Length
响应返回的标头的值,而不是确切的文件大小。
我尝试使用FileInfo
,但它只能将本地文件名作为参数 - 而不是远程文件。
有人可以告诉我如何以字节或千字节为单位获取远程文件大小吗?
我的问题与此问题中的问题相同:
但我的问题是该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 是该文件的DIRECT url。如果您被重定向到另一个位置,响应的标头将是重定向响应的大小。
如果该代码仍然无法为您提供正确的文件大小,我的猜测是您要么被重定向,要么响应确实有缺陷且不准确(这不太可能,但可能)。
您能否提供您尝试下载的文件的网址,或者至少提供您发送和获取的请求和响应?
编辑 2013 年 2 月 4 日:还要检查这个问题:CSS、Javascript 和图像的长度为零
请参阅 Adrian Grigore 的答案,检查“控制面板 -> Windows 功能 -> 万维网服务 -> 通用 HTTP 功能 -> 静态内容”是否已选中。如果没有,请检查它,重新启动 IIS(或整个机器,你永远不知道),然后重试。
我知道这是一个旧帖子。也许我没有清楚地理解 C# 代码或误解了这个问题。如果我做对了,他想以字节为单位获取远程文件的大小?我使用这个 VB.NET 代码,它对我有用:
Imports System.Net
Dim theResponse As HttpWebResponse
Dim theRequest As HttpWebRequest
theRequest = WebRequest.Create("https://www.yoururl.co.za/" & YourFilename)
theResponse = theRequest.GetResponse
Dim FileSizeInBytes As Long = theResponse.ContentLength
希望这可以帮助某人。