it-swarm.com.ru

pHP, как получить размер веб-изображения в кб?

pHP, как получить размер веб-изображения в кб?

getimagesize только получить ширину и высоту.

и filesize вызвал waring.

$imgsize=filesize("http://static.adzerk.net/Advertisers/2564.jpg");
echo $imgsize;

Warning: filesize() [function.filesize]: stat failed for http://static.adzerk.net/Advertisers/2564.jpg

Есть ли другой способ получить размер веб-изображения в килобайтах?

17
fish man

Если не выполнить полный HTTP-запрос, простого способа нет:

$img = get_headers("http://static.adzerk.net/Advertisers/2564.jpg", 1);
print $img["Content-Length"];

Скорее всего, вы можете использовать cURL , чтобы вместо этого отправить более легкий HEAD запрос .

18
mario
<?php
$file_size = filesize($_SERVER['DOCUMENT_ROOT']."/Advertisers/2564.jpg"); // Get file size in bytes
$file_size = $file_size / 1024; // Get file size in KB
echo $file_size; // Echo file size
?>
5
Morgan Delaney

Это звучит как проблема с разрешениями, потому что filesize () должен работать просто отлично.

Вот пример:

php > echo filesize("./9832712.jpg");
1433719

Убедитесь, что права доступа к изображению установлены правильно, и путь также правильный. Вам нужно будет применить некоторую математику для преобразования байтов в КБ, но после этого вы должны быть в хорошей форме!

3
Nicholas Kreidberg

Не уверен насчет использования filesize() для удаленных файлов, но на php.net есть хорошие фрагменты об использовании cURL. 

http://www.php.net/manual/en/function.filesize.php#92462

2
Nick Pyett

Вы можете использовать также эту функцию

<?php
$filesize=file_get_size($dir.'/'.$ff);
$filesize=$filesize/1024;// to convert in KB
echo $filesize;


function file_get_size($file) {
    //open file
    $fh = fopen($file, "r");
    //declare some variables
    $size = "0";
    $char = "";
    //set file pointer to 0; I'm a little bit paranoid, you can remove this
    fseek($fh, 0, SEEK_SET);
    //set multiplicator to zero
    $count = 0;
    while (true) {
        //jump 1 MB forward in file
        fseek($fh, 1048576, SEEK_CUR);
        //check if we actually left the file
        if (($char = fgetc($fh)) !== false) {
            //if not, go on
            $count ++;
        } else {
            //else jump back where we were before leaving and exit loop
            fseek($fh, -1048576, SEEK_CUR);
            break;
        }
    }
    //we could make $count jumps, so the file is at least $count * 1.000001 MB large
    //1048577 because we jump 1 MB and fgetc goes 1 B forward too
    $size = bcmul("1048577", $count);
    //now count the last few bytes; they're always less than 1048576 so it's quite fast
    $fine = 0;
    while(false !== ($char = fgetc($fh))) {
        $fine ++;
    }
    //and add them
    $size = bcadd($size, $fine);
    fclose($fh);
    return $size;
}
?>
1
Sandeep Tawaniya

Вот хорошая ссылка относительно размера файла ()

Вы не можете использовать filesize () для получения информации об удаленном файле. Сначала он должен быть загружен или определен другим методом.

Использование Curl здесь хороший метод:

Руководство

1
lockdown

Вы можете получить размер файла с помощью функции get_headers (). Используйте код ниже:

    $image = get_headers($url, 1);
    $bytes = $image["Content-Length"];
    $mb = $bytes/(1024 * 1024);
    echo number_format($mb,2) . " MB";
0
Ahmad Vaqas Khan