0

我需要知道如何限制 PHP 下载超过 5mb 的文件,如果这样做会返回错误。但如果它通过了,我希望它检查宽度和高度。但我不希望它再次下载文件来检查宽度和高度。这是我当前的代码:

<?php list($width, $height) = getimagesize('http://www.spacetelescope.org/static/archives/images/large/heic0601a.jpg'); echo $width.' x '.$height;

谢谢。

4

1 回答 1

2

因为 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;
}
于 2012-12-19T22:51:32.897 回答