如何从 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 中获取图像文件的大小?的主要内容,如果未能解决你的问题,请参考以下文章