查询:
需要检索托管的远程文件的大小在开始下载之前在 HTTP 端点处。利用 HTTP 标头来实现此目的是否可行?如果可以,如何访问特定文件的 HTTP 标头来获取其大小?
解决方案:
大多数 HTTP 服务器提供了一种检索文件元数据(包括大小)的机制,而无需传输整个文件。这称为 HEAD 方法。以下是如何使用 C# 中的 HEAD 方法从 HTTP 标头检索文件大小:
public long GetFileSize(string url) { long result = -1; System.Net.WebRequest req = System.Net.WebRequest.Create(url); req.Method = "HEAD"; using (System.Net.WebResponse resp = req.GetResponse()) { if (long.TryParse(resp.Headers.Get("Content-Length"), out long ContentLength)) { result = ContentLength; } } return result; }
警告:
虽然大多数服务器支持 HEAD 方法,但有些服务器可能会支持 HEAD 方法。不允许,或者可能会在响应中省略“Content-Length”标头。在这种情况下,可能需要下载文件以确定其大小。然而,许多服务器为了方便起见提供了此信息。
以上是我可以使用 HTTP 标头获取远程文件的大小吗?的详细内容。更多信息请关注PHP中文网其他相关文章!