2010-08-01 3 views
7

Изображения и сценарии размещены на одной учетной записи (один сайт), но мы знаем только URL-адрес изображения.Как я могу указать размер файла изображения из URL-адреса?

$image = "http://example.com/images/full-1091.jpg" 

Как мы можем получить размер этого файла?

Псевдо-код:

{ do something with $image and get $image_size } 
echo $image_size; 

Я бы предпочел $image_size быть отформатирован в человеческих нечитаемых размерах файлов, как «156,8 килобайта» или «20,1 мегабайта».

ответ

25

Используйте filesize функцию как это:

echo filesize($filename) . ' bytes'; 

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

function format_size($size) { 
     $sizes = array(" Bytes", " KB", " MB", " GB", " TB", " PB", " EB", " ZB", " YB"); 
     if ($size == 0) { return('n/a'); } else { 
     return (round($size/pow(1024, ($i = floor(log($size, 1024)))), 2) . $sizes[$i]); } 
} 
+0

Просто быть педантичным , этот ответ увековечивает путаницу между десятичными и двоичными сокращениями для кратных. Является ли мегабайт 1 000 000 байт или 1 048 576 байтов? https://en.wikipedia.org/wiki/Binary_prefix Я бы предложил либо изменить $ size на массив («Bytes», «KiB», «MiB», «GiB», «TiB», «PiB», «EiB» »,« ZiB »,« YiB ») или изменение двух вхождений с 1024 на 1000. – RenniePet

-1
echo filesize($_SERVER['DOCUMENT_ROOT']."/images/full-1091.jpg"); 

http://site.com/images/full-1091.jpg отмечает, что не файл

, как для форматированного вывода («156,8 килобайта» или «20,1 мегабайта») пытаются помочь себе и использовать поиск. Уже есть тонна ответов на этот вопрос.

+0

@Pekka использовать файл означает путь "использовать $ _SERVER [ 'DOCUMENT_ROOT']"? – James

+0

@Ignatz это один из вариантов - или используйте полный путь ('/ path/to/folder/images/image.jpg') –

3

Изображения и сценарии, размещенные на одной учетной записи (один сайт).

Затем не используйте URL-адрес: используйте прямой путь к файлу и filesize().

+0

Я бы сказал, что это правильное решение для файлов, локальных на том же сервере, что и решение для поиска файлов по URL-адресу довольно немного уродливое и дольше, поэтому его следует использовать только для удаленных файлов: http://www.php.net/manual/en/function.filesize.php#92462 – Ashaman

-5
<?php 
    $contents=file_get_contents("http://site.com/images/full-1091.jpg"); 
    // var_dump($contents); 
// $fp =fopen("1.jpeg","w"); 
    file_put_contents("1.jpeg",$contents); 
    $size= filesize("1.jpeg"); 
    echo $size."in Bytes"; 
    ?> 

Проверить это может работать для вас

+1

чувак, это уродливое решение, которое я когда-либо видел. –

+0

Решение будет правильным (за исключением того, что оно сохраняет содержимое в 1.jpeg и пытается получить размер файла 1.gif), если PHP-код работает, это сервер, который отличается от http: // сайта. ком. Если PHP-код запущен на сайте http: //.com, то он должен непосредственно вызывать 'filesize()' передачу пути файла изображения. Поскольку OP не сообщал, работает ли PHP-код на том же сервере, который содержит изображение, это решение также действует. – kiamlaluno

+0

@kiamlaluno вы не можете прочитать. 'Изображения и скрипты, размещенные на одной учетной записи (один сайт).' Лучше ограничивайте свои увлечения наукой. –

Смежные вопросы