クエリ:
ホストされているリモート ファイルのサイズを取得することが望ましいダウンロードを開始する前に、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 中国語 Web サイトの他の関連記事を参照してください。