ホームページ >バックエンド開発 >PHPチュートリアル >リモート ファイルをダウンロードせずにそのサイズを取得するにはどうすればよいですか?

リモート ファイルをダウンロードせずにそのサイズを取得するにはどうすればよいですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-12-18 09:33:10168ブラウズ

How Can I Get the Size of a Remote File Without Downloading It?

リモート ファイル サイズの決定

ダウンロードせずにリモート ファイルのファイル サイズを取得することは、特定の場合に便利な最適化になる可能性があります。

解決策

応答で述べたように、HTTP HEAD リクエストの使用は、このタスクに適したアプローチです。 HEAD リクエストは、実際の本文を取得せずに、リソースに関連付けられた HTTP ヘッダーを取得します。

実装

これを利用する PHP 関数は次のとおりです。メソッド:

function get_remote_file_size($url) {
  $curl = curl_init($url);
  curl_setopt($curl, CURLOPT_NOBODY, true);
  curl_setopt($curl, CURLOPT_HEADER, true);
  curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
  curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true);

  $data = curl_exec($curl);
  curl_close($curl);

  if ($data) {
    preg_match("/Content-Length: (\d+)/", $data, $matches);
    $content_length = $matches[1] ?? -1;
    return $content_length;
  }

  return -1;
}

使用法

この関数を使用して、リモート ファイルのサイズを決定できます:

$file_size = get_remote_file_size("http://my_url/my_file.txt");

注: このメソッドは、サーバーが HEAD リクエストを受け入れ、正しい Content-Length を提供することに依存します。ヘッダー。

以上がリモート ファイルをダウンロードせずにそのサイズを取得するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。