Предположим, у нас есть файл изображения, хранящийся на удаленном сервере (например, давайте возьмем это изображение ), как мы можем определить (в PHP-коде) размер файла?
Если файл был на сервере, мы бы использовали filesize ( см. Здесь ), но это не сработало бы в удаленном файле ( см. Здесь ).
Другая альтернатива – проверить «Content-Length», но я считаю, что это не сработает для файла изображения ( см. Здесь )
Я хотел бы получить решение, подобное приведенному здесь (например, что-то вроде:
<?php function get_remote_size($url) { // magic } echo get_remote_size("http://img.ruphp.com/php/Hummus-soup.jpg"); ?>
Но без необходимости загружать изображение. Это возможно?
Предполагая, что вас беспокоит размер файла (а не размеры изображения), вы можете захватить Content-Length, и он обычно работает.
Если сервер с другого конца не подает заголовок, у вас не останется выбора, кроме как ПОЛУЧИТЬ файл и проверить его размер локально.
<?PHP $headers = get_headers('http://img.ruphp.com/php/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";
echo get_headers ($ url, 1) ['Content-Length'];
У кого-то есть функция для того, что в основном делает это как соединение сокета: http://snippets.dzone.com/posts/show/1207