ホームページ >バックエンド開発 >PHPの問題 >PHPダウンロード時にファイルサイズが取得できない問題の解決方法

PHPダウンロード時にファイルサイズが取得できない問題の解決方法

PHPz
PHPzオリジナル
2023-04-11 10:42:391244ブラウズ

PHP を使用してファイルをダウンロードする場合、ファイル サイズを取得できないという問題が発生することがあります。この問題は、次の理由で発生する可能性があります。

  1. サーバーはファイル サイズの取得をサポートしていません。場合によっては、サーバーがファイル サイズ情報の取得をサポートしていない場合があります。このとき、PHPを使用してファイルをダウンロードする場合、ファイルサイズは取得されません。
  2. ネットワーク環境が不安定です。大きなファイルをダウンロードする場合、ネットワーク環境が不安定になることが多く、その際に PHP でのファイルサイズの取得エラーが発生する可能性があります。

それでは、この問題をどうやって解決すればいいのでしょうか?参照用の解決策をいくつか示します。

  1. CURL を使用してファイル サイズを取得します。 CURL 関数ライブラリを使用してファイル サイズ情報を取得できます。コード例は次のとおりです:
$url = 'http://example.com/file.zip';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HEADER, true);
curl_setopt($ch, CURLOPT_NOBODY, true);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
$data = curl_exec($ch);
$fileSize = curl_getinfo($ch, CURLINFO_CONTENT_LENGTH_DOWNLOAD);
curl_close($ch);
  1. サーバーの応答ヘッダーを直接取得してファイル サイズを取得します。 PHP の stream_context_set_default 関数を使用してデフォルトの http-header を設定し、ファイル サイズ情報を直接取得するサンプル コードは次のとおりです:
$url = 'http://example.com/file.zip';
$opts = array(
  'http' => array(
    'method' => 'HEAD'
  )
);
$context = stream_context_create($opts);
$fp = fopen($url, 'r', false, $context);
$meta = stream_get_meta_data($fp);
foreach ($meta['wrapper_data'] as $value) {
  if (stristr($value, 'content-length')) {
    $content_length = (int) trim(substr($value, 15));
  }
}
fclose($fp);

まとめると、PHP が動作しない問題を解決する必要があります。ファイルのダウンロード時にファイル サイズを取得できるため、CURL を使用するか、サーバーの応答ヘッダーを直接取得してファイル サイズを取得できます。これらの方法は、PHP 開発者がファイルのダウンロード プロセスをより適切に管理および制御し、ユーザー エクスペリエンスとアプリケーションのパフォーマンスを向上させるのに役立ちます。

以上がPHPダウンロード時にファイルサイズが取得できない問題の解決方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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