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

Posted

技术标签:

【中文标题】如何获取远程存储图像的文件大小? (php)【英文标题】:How to get the file size of a remotely stored image? (php) 【发布时间】:2010-10-08 22:06:39 【问题描述】:

假设我们有一个图像文件,存储在远程服务器中(例如,让我们使用this image),我们如何确定(在 php 代码中)它的文件大小?

如果文件在服务器上,我们会使用文件大小 (see here),但这不适用于远程文件 (see here)。

另一种选择是检查“内容长度”,但我相信它不适用于图像文件 (see here)

我想要一个类似here 的解决方案(例如,类似:

<?php
function get_remote_size($url)   // magic

echo get_remote_size("http://humus101.com/wp-content/uploads/2009/11/Hummus-soup.jpg");
?>

但无需下载图像。这可能吗?

【问题讨论】:

【参考方案1】:

假设您担心文件的大小(而不是图像的尺寸),您可以获取 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,但它在获取图像大小之前下载了整个文件。谢谢你。【参考方案2】:

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

【讨论】:

【参考方案3】:

其他人有一个基本上作为套接字连接的功能: http://snippets.dzone.com/posts/show/1207

【讨论】:

谢谢。作为套接字连接有什么好处? 它允许它在没有get_headers 的 PHP4 上返回 HEAD 请求。我今天不会用它。 它会,但它会下载整个文件。

以上是关于如何获取远程存储图像的文件大小? (php)的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 PHP 和 GD 获取图像资源大小(以字节为单位)?

如何从 Firebase 存储中获取调整大小的图片下载 URL

PHP 获取远程图像,调整大小并保存

PHP获取远程图片并调整图像大小(转)

php如何获取以kb为单位的网络图像大小?

如何在Android中获取图像的大小?