C# 使用WebResponse的磁盘上的文件大小?
是否可以使用webresponse检索磁盘上的文件大小? 如果没有,如何检索文件大小C# 使用WebResponse的磁盘上的文件大小?,c#,asp.net-mvc,C#,Asp.net Mvc,是否可以使用webresponse检索磁盘上的文件大小? 如果没有,如何检索文件大小 HttpWebRequest request = (HttpWebRequest)WebRequest.Create(finalUrl); request.AllowAutoRedirect = true; request.KeepAlive = false; request.ProtocolVersion = HttpVersion.Version10; request.ServicePoint.Connec
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(finalUrl);
request.AllowAutoRedirect = true;
request.KeepAlive = false;
request.ProtocolVersion = HttpVersion.Version10;
request.ServicePoint.ConnectionLimit = 24;
//request.Method = "HEAD";
var contentType = string.Empty;
using (WebResponse webResponse = request.GetResponse())
{
contentType = webResponse.ContentType;
using (Stream stream = webResponse.GetResponseStream())
{
using (MemoryStream memoryStream = new MemoryStream())
{
Byte[] buffer = new Byte[1024];
Int32 bytesRead;
while ((bytesRead = stream.Read(buffer, 0, buffer.Length)) > 0)
{
memoryStream.Write(buffer, 0, bytesRead);
}
documentFile.Data = memoryStream.ToArray();
}
}
}
我认为,在下载文件之前,从站点获取文件大小信息的唯一方法是读取
ContentLength
头,并且不能保证服务器提供它
var fileSize = webResponse.ContentLength;
或者下载文件后,可以获取要检索的流的长度大小
var fileSize = memoryStream.Length;
您的意思是要下载的总字节数。下载的数据可能永远不会存储在任何一方的磁盘上,因此在本文中谈论“磁盘上的文件大小”是一个相当令人困惑的术语并且可以根据需要将其转换为Kb或Kb。您可以详细说明场景吗?您是否正在尝试获取一个已提交到端点的文件?或者您在这里尝试执行什么操作?
documentFile
是您计划保存的文件,我想?这样就可以得到字节数了。这应该是磁盘大小的一个很好的指示。如果不够准确,请保存它,然后检查其大小。是的documentFile是我存储的文件,但它似乎与磁盘上的filesize不同。下载文件时为12mb,而ContentLength或Length为2855字节。我尝试过,但与磁盘上的文件大小不同。我错过了什么?试过哪一个?另外,将文件保存到磁盘的位置?webResponse.ContentLength和memoryStream.Length都返回大小,但不返回磁盘上的实际大小。该文件通过服务器上的DocumentFile保存。