Так вот, как, используя в проекте PHP, узнать размер сжатых файлов в архиве zip?
В доках PHP к ZipArchive абсолютно ничего нет про размер файлов в архиве. Может, можно как-то через функции pack/unpack, как в одном примере по получению информации из файла mp3?
Спустя 2 часа, 55 минут, 23 секунды (16.07.2010 - 22:04) Reflex написал(а):
<?php
function get_zip_originalsize($filename) {
$size = 0;
$resource = zip_open($filename);
if (!is_resource($resource)) return -1;
while ($dir_resource = zip_read($resource)) {
$size += zip_entry_filesize($dir_resource);
}
zip_close($resource);
return $size;
}
$size = get_zip_originalsize('file.zip');
echo "original size: $size bytes\n";
Написал за пару минут сверяясь с мануалом.
Спустя 1 день, 13 часов, 15 минут, 39 секунд (18.07.2010 - 11:20) Ferro7 написал(а):
Не, если бы вы делали, сверяясь с мануалов, вы бы написали:
но не
А так да, спасибо за примерчек. Я просто использовал КЛАСС ZipArchive, и смотрел доки к именно к КЛАССУ, но не к функциям zip_open
while( ($dir_resource = zip_read($resource) !== false )
но не
while($dir_resource = zip_read($resource))
А так да, спасибо за примерчек. Я просто использовал КЛАСС ZipArchive, и смотрел доки к именно к КЛАССУ, но не к функциям zip_open
Спустя 32 минуты, 36 секунд (18.07.2010 - 11:52) Reflex написал(а):
Цитата ("Ferro7") |
Не, если бы вы делали, сверяясь с мануалов, вы бы написали: <pre class="sh_sourceCode" rel="php"><span class="sh_control">while</span><span class="sh_symbol">( (</span><span class="sh_variable">$dir_resource</span> <span class="sh_symbol">=</span> <span class="sh_function">zip_read</span><span class="sh_symbol">(</span><span class="sh_variable">$resource</span><span class="sh_symbol">) !==</span> <span class="sh_keyword">false</span> <span class="sh_symbol">)</span></pre> |
Нет, спасибо, я не считаю хорошим тоном делать такие проверки для функций, которые возвращают переменную типа resourse или FALSE.
В мануале написано неверно, функция zip_read возвращает или resourse или FALSE, никаких других вариантов нет. Да даже если бы и был, ваш вариант не помог бы.
А вот функция zip_open действительно может вернуть код ошибки, это я исправил в своём коде, добавив одну строку.
php_zip.c вам в помощь.
/tread