0

我发现了一个漂亮的小 php 函数来检查 url 是否是图像 - 还有一种方法可以确定该图像是否大于 1mb?

找到的解决方案:

我在这里找到了一个可行的解决方案:php how to get web image size in kb?

4

2 回答 2

2

来自:https ://stackoverflow.com/a/3894706/187954

<?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";
于 2012-05-07T20:13:13.317 回答
1

我会参考这篇文章,我想它会回答你的问题。 在 PHP 中获取远程文件的文件大小的最简单方法?

有两种方法(我知道)。一种是使用 CURL 并仅获取标头(更有效,更不可靠),并且file_get_contents (more reliable, less efficient).

使用 CURL,您可以获得CONTENT_LENGTH文件大小的标题。然后你可以从那里做简单的数学运算,看看它是否超过 1mb。问题在于远程服务器可能不支持该功能。

通过使用strlen(file_get_contents("YOUR URL"))可以获得文件中的总字节数,但是脚本必须先下载文件,如果是大图像,这是一个问题。

要检查文件类型,您可以使用 substr 检查文件扩展名。

像这样的东西可以工作,但有它自己的问题

$ext = substr($URL, -3, 3);

if($ext == 'jpg' || $ext == 'gif') {
   //is image
}else{
   //not image
}
于 2012-05-07T20:33:39.290 回答