Как получить размер файла удаленно сохраненного изображения? (РНР)

Предположим, у нас есть файл изображения, хранящийся на удаленном сервере (например, давайте возьмем это изображение ), как мы можем определить (в 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