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

Допустим, у нас есть файл изображения, хранящийся на удаленном сервере (например, давайте возьмем это изображение), как мы можем определить (в коде PHP) его размер файла?

Если бы файл находился на сервере, мы бы использовали размер файла ( см. Здесь), но это не сработало бы для удаленного файла ( см. Здесь).

Другой альтернативой является проверка "Content-Length", но я считаю, что он не будет работать для файла изображения ( см. Здесь)

Я хотел бы получить решение, подобное приведенному здесь (например, что-то вроде:

<?php
function get_remote_size($url) {  // magic
}
echo get_remote_size("http://humus101.com/wp-content/uploads/2009/11/Hummus-soup.jpg");
?>

Но без необходимости загружать изображение. Это возможно?

3 ответа

Решение

Предполагая, что вы беспокоитесь о размере файла (не о размерах изображения), вы можете взять Content-Length, и он обычно будет работать.

Если сервер на другом конце не предоставляет заголовок, у вас не будет выбора, кроме как ПОЛУЧИТЬ файл и проверить его размер локально.

<?PHP
$headers = get_headers('http://humus101.com/wp-content/uploads/2009/11/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

Другие вопросы по тегам