获取不带内容长度的远程文件大小

本文关键字:文件大小 获取 | 更新日期: 2023-09-27 18:14:20

所以我已经想出了如何通过以下代码从互联网上获取远程文件的文件大小:

WebRequest req = WebRequest.Create(url);
req.Method = "HEAD";
using (WebResponse resp = req.GetResponse())
{
    int ContentLength;
    if (int.TryParse(resp.Headers.Get("Content-Length"), out ContentLength))
    {
        // Stuff ~
    }
}

如果没有Content-Length选项,我如何获得远程文件的大小?

我真的没主意了,我在网上搜了好几个小时,还是找不到。如果有人知道,请你帮我一下好吗?

蓝宝石

~

编辑
例如,这个文件似乎没有内容长度?http://ag.teamdna.de/files/advancedgenetics-1.4.3-1.6.jar

<

解决方案/strong>

我用GET代替HEAD,这似乎没有任何问题:)!

获取不带内容长度的远程文件大小

按标准:

响应HEAD请求的HTTP报头中包含的元信息应该与响应GET请求发送的信息相同。

不幸的是,有许多HTTP服务器在Content-Length标头方面不能准确地工作。由于HEAD响应没有实际内容,因此它们返回的Content-LengthGET不同。

幸运的是,我们可以通过发出GET请求,然后在不读取内容的情况下处理响应来获得真正的标头。响应会在接收到头文件并下载完所有文件之前立即返回。如果你从未阅读过内容,它就不会被完全下载。当您处置响应对象时,它将关闭与服务器的连接,从而终止传输。

试着用GET代替HEAD