如何从 URL 中获取图像文件的大小?

Posted

技术标签:

【中文标题】如何从 URL 中获取图像文件的大小?【英文标题】:How can I the size of an image file from the URL? 【发布时间】:2010-08-01 09:43:30 【问题描述】:

图像和脚本托管在同一个帐户(一个站点)上,但我们只知道图像的 URL。

$image = "http://example.com/images/full-1091.jpg"

我们怎样才能得到这个文件的大小

伪代码:

 do something with $image and get $image_size 
echo $image_size;

我希望$image_size 被格式化为人类可读的文件大小,例如“156,8 Kbytes”或“20,1 Mbytes”。

【问题讨论】:

【参考方案1】:

像这样使用filesize函数:

echo filesize($filename) . ' bytes';

你也可以用这个函数来格式化大小的单位:

function format_size($size) 
      $sizes = array(" Bytes", " KB", " MB", " GB", " TB", " PB", " EB", " ZB", " YB");
      if ($size == 0)  return('n/a');  else 
      return (round($size/pow(1024, ($i = floor(log($size, 1024)))), 2) . $sizes[$i]); 

【讨论】:

只是为了迂腐,这个答案使倍数的十进制和二进制缩写之间的混淆永久化。兆字节是 1,000,000 字节还是 1,048,576 字节? en.wikipedia.org/wiki/Binary_prefix 我建议将 $sizes 更改为数组(“Bytes”、“KiB”、“MiB”、“GiB”、“TiB”、“PiB”、“EiB”、“ZiB”、“YiB”) ,或将两次出现的 1024 更改为 1000。【参考方案2】:

图像和脚本托管在同一个帐户(一个站点)上。

然后不要使用 URL:使用直接文件路径和filesize()

【讨论】:

我会说这是同一服务器本地文件的正确解决方案,因为通过 url 查找文件的解决方案有点丑陋且更长,因此它只能用于远程文件: php.net/manual/en/function.filesize.php#92462【参考方案3】:

请注意:

filesize() 函数的结果被缓存! 使用 clearstatcache() 清除缓存...

来源:http://www.w3schools.com/php/func_filesystem_filesize.asp

【讨论】:

【参考方案4】:
 echo filesize($_SERVER['DOCUMENT_ROOT']."/images/full-1091.jpg");

注意http://site.com/images/full-1091.jpg 不是文件

至于格式化输出(“156,8 Kbytes”或“20,1 Mbytes”)尝试帮助自己并使用搜索。这个问题已经有很多答案了。

【讨论】:

@Pekka 使用文件路径意味着“使用 $_SERVER['DOCUMENT_ROOT']”? @Ignatz 这是一种选择 - 或使用硬编码的完整路径 (/path/to/folder/images/image.jpg)【参考方案5】:
<?php
  $contents=file_get_contents("http://site.com/images/full-1091.jpg");
   // var_dump($contents);
//  $fp =fopen("1.jpeg","w");
  file_put_contents("1.jpeg",$contents);
  $size= filesize("1.jpeg");
  echo $size."in Bytes";
  ?>

检查一下它是否适合你

【讨论】:

老兄,这是我见过的最丑陋的解决方案。 如果 PHP 代码运行的服务器不同来自site.com。如果 PHP 代码也在 site.com 上运行,那么它应该直接调用 filesize() 并传递图像文件路径。由于 OP 没有报告 PHP 代码是否在包含图像的同一台服务器上运行,因此该解决方案也有效。 @kiamlaluno 你看不懂。 Images and script hosted on the same account.(one site).你最好把你的爱好限制在科幻。 上校。弹片:我戴着眼镜;你有什么借口来回答“尝试帮助自己并使用搜索”的问题?那么,如果我们不是在谈论通过 HTTP 协议访问的资源,那么关于文件不是文件的争论就完全没有意义了。 @kiam here: ***.com/faq Please do look around to see if your question has already been asked (and maybe even answered!) before you ask. 说到问题,一个不知道什么是文件的开发人员一无是处。了解基本原理比复制和粘贴某人在 SO 上为您编写的代码片段的能力更重要。对于你们中的大多数人,SO 用户,编程是为了什么。

以上是关于如何从 URL 中获取图像文件的大小?的主要内容,如果未能解决你的问题,请参考以下文章

如何从PHP中的URL获取图像的大小?

如何从 SDWebImage 获取图像大小?

如何在 iPhone 中快速从文件路径 url 获取视频或图像?

如何从对象数组中获取图像的URL

如何从 NSArray 中获取图像 URL?

从资产中获取实际图像名称