1

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

获取 http://.../文件大小

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

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

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

4

2 回答 2

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);
}

请确保您尝试下载的文件的url 是该文件的DIRECT url。如果您被重定向到另一个位置,响应的标头将是重定向响应的大小。

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

您能否提供您尝试下载的文件的网址,或者至少提供您发送和获取的请求和响应?

编辑 2013 年 2 月 4 日:还要检查这个问题:CSS、Javascript 和图像的长度为零

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

于 2013-03-29T10:27:19.470 回答
0

我知道这是一个旧帖子。也许我没有清楚地理解 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

希望这可以帮助某人。

于 2022-02-26T21:33:13.340 回答