如何获取远程存储图像的文件大小?(PHP)

3
假设我们有一个图像文件,存储在远程服务器上(例如,让我们使用这张图片),如何在PHP代码中确定它的文件大小?
如果文件在服务器上,我们可以使用filesize(参见此处),但是这在远程文件上不起作用(参见此处)。
另一种选择是检查“Content-Length”,但我认为它对于图像文件不起作用(参见此处)。
我希望得到类似于此处给出的解决方案(例如,像这样的东西:
<?php
function get_remote_size($url) {  // magic
}
echo get_remote_size("http://humus101.com/wp-content/uploads/2009/11/Hummus-soup.jpg");
?>

但是不需要下载图片,这是否可能?
3个回答

8
假设您担心文件大小(而不是图像尺寸),则可以获取Content-Length并且通常会起作用。
如果另一端的服务器未提供标头,则您将不得不获取该文件,并在本地检查其大小。
<?PHP
$headers = get_headers('http://humus101.com/wp-content/uploads/2009/11/Hummus-soup.jpg');
$size = null;
foreach($headers as $h){
    /** look for Content-Length, and stick it in $size **/
}
if ($size === null){ //we didn't get a Content-Length header
    /** Grab file to local disk and use filesize() to set $size **/
}

echo "image is $size bytes";

我之前使用的是 getimagesize,但它在获取图像大小之前会下载整个文件。谢谢你提供的这个方法。 - machineaddict

1

回显 get_headers($url,1)['Content-Length'];


0

它作为套接字连接的优势是什么? - Tal Galili
它允许在PHP4上执行HEAD请求,而该版本没有“get_headers”。但我今天不会使用它。 - bobince
可以这样做,但它会下载整个文件。 - machineaddict

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接