Как получить размер файла удаленного изображения? (РНР) - PullRequest
3 голосов
/ 09 октября 2010

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

8 голосов
/ 09 октября 2010

Если вы беспокоитесь о размере файла (а не о размере изображения), вы можете получить 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";
1 голос
/ 24 апреля 2013

echo get_headers ($ url, 1) ['Content-Length'];

0 голосов
/ 09 октября 2010

У кого-то есть функция для этого, которая в основном делает это как сокетное соединение: http://snippets.dzone.com/posts/show/1207

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...