【发布时间】:2012-05-16 08:05:39
【问题描述】:
我发现了一个漂亮的小 php 函数来检查 url 是否是图像 - 还有一种方法可以确定该图像是否是例如> 1mb?
找到的解决方案:
我在这里找到了一个可行的解决方案:php how to get web image size in kb?
【问题讨论】:
-
下载并检查大小。
标签: php image url image-size
我发现了一个漂亮的小 php 函数来检查 url 是否是图像 - 还有一种方法可以确定该图像是否是例如> 1mb?
找到的解决方案:
我在这里找到了一个可行的解决方案:php how to get web image size in kb?
【问题讨论】:
标签: php image url image-size
发件人: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";
【讨论】:
我会参考这篇文章,我想它会回答你的问题。 Easiest way to grab filesize of remote file in PHP?
有两种方法(我知道)。一种是使用 CURL 并仅获取标头(更有效,更不可靠)和file_get_contents (more reliable, less efficient)。
使用 CURL,您可以只获取文件大小的 CONTENT_LENGTH 标头。然后你可以从那里做简单的数学运算,看看它是否超过 1mb。问题是远程服务器可能不支持该功能。
使用strlen(file_get_contents("YOUR URL"))可以得到文件中的total byes,但是脚本要先下载文件,如果是大图就麻烦了。
要检查文件类型,您可以使用 substr 检查文件扩展名。
类似这样的方法可行,但有其自身的问题
$ext = substr($URL, -3, 3);
if($ext == 'jpg' || $ext == 'gif') {
//is image
}else{
//not image
}
【讨论】: