2010-09-27 3 views
7

Я был googleing, но все, что я получаю, это getimagesize и размер файла.
getimagesize dosent получить размер KB только ширину и высоту, что не то, что они ищут.
Filesize дать мне сообщение Предупреждение: размер файла() [function.filesize]: стат Сбой
файл, в котором идет речь, 51Kb .jpg файлуphp получить KB размер изображения

$imgsize=filesize("http://localhost/projects/site/schwe/user/1/1.jpg"); 

не работает,

как это сделать?

+0

Какой версии PHP вы используете? – pascal

+0

Возможно, посмотрите [этот вопрос] (http://stackoverflow.com/questions/2203679/php-filesize-works-on-all-but-one-file-gives-stat-failed-error) – pascal

ответ

7

Вы не можете получить размер файла удаленных элементов, либо укажите относительный путь в вашей системе, либо сделайте file_get_contents(), чтобы получить содержимое сначала . Таким образом, вместо http: //, сделайте filesize('/path/to/local/system'). Убедитесь, что его читаемый php-процесс

+0

да, правда, i просто заметили, спасибо. я должен был подумать об этом раньше, я такой идиот. – Macao

+0

Как насчет подсказки в ['filesize()' docs на PHP.net] (http://php.net/manual/en/function.filesize.php)? В нем говорится: «Начиная с PHP 5.0.0, эта функция также может использоваться с некоторыми оболочками URL-адресов. Обратитесь к поддерживаемым протоколам и упаковщикам, чтобы определить, какие обертки поддерживают семейство функций stat()». Кажется, вы ** можете ** использовать 'filesize()' удаленные элементы. Вам нужно только правильно настроить ваш сервер и парсер PHP (вопросы безопасности). – trejder

4

Вы не можете найти размер файла удаленного файла, подобного этому. Он предназначен для просмотра файлов локальных файлов.

Например ...

$imgsize = filesize('/home/projects/site/1.jpg'); 
+0

Посмотрите мои комментарии к отвечу Стьюи. Вы ** можете ** использовать размер файлов для удаленного файла, если только ваша среда и сервер настроены правильно. – trejder

0

filesize принимает имя файла в качестве аргумента не адрес и возвращает размер файла в байтах. Вы можете разделить возвращаемое значение на 1024, чтобы получить размер в КБ.

+0

Посмотрите мои комментарии к отвечу Стьюи. Вы ** можете ** использовать размер файлов для удаленного файла, если только ваша среда и сервер настроены правильно. – trejder

1

filesize() - это функция для использования. Это может быть из-за неудачу

  1. Вы пытаетесь получить веб-адрес & URL обертки не могут быть включены
  2. что URL не является действительной.

Если вы пытаетесь запустить filesize() в локальном файле, укажите путь к файловой системе, а не какой-либо веб-URL.

0

У меня была та же проблема, что и я решил так. Я не знаю, насколько оптимальным это, но это работает для меня:

getimagesize("http://localhost/projects/site/schwe/user/1/1.jpg"); 

$file_size = $file[0]*$file[1]*$file["bits"]; 
+0

Если файлize() не работает с ресурсами HTTP, getimagesize() также завершится с ошибкой. Вычисление размера файла путем умножения несжатых свойств изображения также приведет к неправильным результатам. – Sven

1

Или вы также можете сделать что-то вроде:

$header = get_headers($url); 
foreach ($header as $head) { 
    if (preg_match('/Content-Length: /', $head)) { 
     $size = substr($head, 15);      
    } 
} 
Смежные вопросы