首页 >后端开发 >php教程 >如何在不下载远程文件的情况下获取其大小?

如何在不下载远程文件的情况下获取其大小?

Mary-Kate Olsen
Mary-Kate Olsen原创
2024-12-18 09:33:10176浏览

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中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn