我想在下载文件之前获取文件大小,在我的代码中,我从请求中提取了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
标头
如果没有Content-Length标头,您将不会事先知道内容的大小。
如果无法控制服务器,则必须对其进行处理。一种选择是将数据流传输到磁盘上的临时文件中,一旦有了该文件,就可以确定大小,然后将其传递给下一步操作。
您可以将其流式传输到内存缓冲区中,但是由于它没有那么大,因此存在最终耗尽内存的风险。