我需要知道如何限制 PHP 下载超过 5mb 的文件,如果这样做会返回错误。但如果它通过了,我希望它检查宽度和高度。但我不希望它再次下载文件来检查宽度和高度。这是我当前的代码:
<?php
list($width, $height) = getimagesize('http://www.spacetelescope.org/static/archives/images/large/heic0601a.jpg');
echo $width.' x '.$height;
谢谢。
我需要知道如何限制 PHP 下载超过 5mb 的文件,如果这样做会返回错误。但如果它通过了,我希望它检查宽度和高度。但我不希望它再次下载文件来检查宽度和高度。这是我当前的代码:
<?php
list($width, $height) = getimagesize('http://www.spacetelescope.org/static/archives/images/large/heic0601a.jpg');
echo $width.' x '.$height;
谢谢。
因为 jpeg 图像实际上并未将其尺寸存储在文件中的某个位置,所以您无法执行此操作。
如果图像大于 5MB,为了防止它尝试获取图像的尺寸,您可以向服务器发出头部请求以获取文件的大小。有关如何执行此操作的信息,请参阅PHP:无需下载文件的远程文件大小。
它会是这样的:
function getRemoteFileSize($remoteFile){
$ch = curl_init($remoteFile);
curl_setopt($ch, CURLOPT_NOBODY, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HEADER, true);
$data = curl_exec($ch);
curl_close($ch);
if ($data === false)
return 0;
if (preg_match('/Content-Length: (\d+)/', $data, $matches))
return (int)$matches[1];
return 0;
}
$remoteFile = 'http://www.spacetelescope.org/static/archives/images/large/heic0601a.jpg';
if(getRemoteFileSize($remoteFile) < 5 * 1024 * 1024){
list($width, $height) = getimagesize($remoteFile);
echo $width.' x '.$height;
}