下载前不使用Content-Length标头获取文件大小

问题描述 投票:0回答:1

我想在下载文件之前获取文件大小,在我的代码中,我从请求中提取了Content-Length标头。我的代码在很多情况下都可以正常工作,但是在某些情况下没有Content-Length标头,我的问题是在没有Content-Length标头的情况下如何获取文件大小,这是我的代码:

HttpWebRequest myHttpWebRequest = (HttpWebRequest)WebRequest.Create("https://www.learningcontainer.com/wp-content/uploads/2019/09/sample-docx-file-for-testing.docx");
using (HttpWebResponse myHttpWebResponse = (HttpWebResponse)myHttpWebRequest.GetResponse())
{
var headers = myHttpWebResponse.Headers;
    if (headers.AllKeys.Contains("Content-Length"))
        var fileSize = headers.GetValues("Content-Length")[0];
    else
    {
     //code here should be added
    }
}

例如,在给定的URL中没有Content-Length标头

c# httprequest content-length
1个回答
0
投票

如果没有Content-Length标头,您将不会事先知道内容的大小。

如果无法控制服务器,则必须对其进行处理。一种选择是将数据流传输到磁盘上的临时文件中,一旦有了该文件,就可以确定大小,然后将其传递给下一步操作。

您可以将其流式传输到内存缓冲区中,但是由于它没有那么大,因此存在最终耗尽内存的风险。

© www.soinside.com 2019 - 2024. All rights reserved.