За последние 24 часа нас посетили 18052 программиста и 1651 робот. Сейчас ищут 1554 программиста ...

SimpleZipArchive

Тема в разделе "Решения, алгоритмы", создана пользователем AlexanderPHP, 30 июл 2012.

  1. AlexanderPHP

    AlexanderPHP Активный пользователь

    С нами с:
    30 июл 2012
    Сообщения:
    3
    Симпатии:
    0
    Приветствую всех. Нужен был простой класс для работы с ZIP. Обычно я работал с PclZip, но он слишком громоздкий, а ZipArchive недостаточно удобен в использовании. Написал для себя небольшой класс и вот что из этого вышло

    https://github.com/AlexanderNikonov/SimpleZipArchive

    Буду рад, если поучаствуете в разработке на гитхабе.

    Вот несколько примеров использования класса:

    Код (PHP):
    1. $ZIP = new SimpleZipArchive('test.zip'); //Открываем/создаём архив test.zip
    2.  
    3. $ZIP->AddFile = array(
    4.         '/home/file.txt' => 'file.txt', // Добавляем несколько файлов из директории
    5.         '/home/img.jpg' => 'images.jpg',
    6.         array(
    7.             'logo.jpg' => file_get_contents('http://www.php.ru/images/logo.gif'), //Добавляем файлы по контенту.
    8.         ),
    9.     );
    10.  
    11. $ZIP->ZipDir = 'site'; // Рекурсивно архивируем папку "site"
    12.  
    13. $ZIP->Comment = 'this is a comment'; // Добавляем комментарий
    14.  
    15. $ZIP->SimpleZip(); // Применяем все изменения.     
     
  2. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
  3. AlexanderPHP

    AlexanderPHP Активный пользователь

    С нами с:
    30 июл 2012
    Сообщения:
    3
    Симпатии:
    0
    Спасибо. Но если бы Вы посмотрели на класс, то бы увидели, что он основан именно на нем, но в удобной доработке и с расширенными возможностями.
     
  4. YSandro

    YSandro Старожил

    С нами с:
    7 апр 2011
    Сообщения:
    2.523
    Симпатии:
    2
    А какой ещё функционал планируете добавить?

    Какой-то странный метод "Delate File". Обвинить в преступлении файл? :) Перевод
     
  5. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    deflate вестимо

    Добавлено спустя 1 минуту 32 секунды:
    вот это удобно!
     
  6. YSandro

    YSandro Старожил

    С нами с:
    7 апр 2011
    Сообщения:
    2.523
    Симпатии:
    2
    Вот это я как раз затестил, и не сработало. В папке была всего одна картинка. Папка создалась в архиве, а фотки там нет. Видимо, рекурсивно только папки обходит и создаёт :)
     
  7. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    велком на гитхаб =)
     
  8. AlexanderPHP

    AlexanderPHP Активный пользователь

    С нами с:
    30 июл 2012
    Сообщения:
    3
    Симпатии:
    0
    Оу, опечатался, конечно же delete. Обновлю в новой версии.
    [​IMG]
    Как ни странно, у меня работает. Можете сказать версию PHP и ОС

    Добавлено спустя 8 минут 21 секунду:
    Или попробуйте сделать:
    Код (PHP):
    1. $Dir = 'dir';
    2. $iterator = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($Dir . "/"));
    3. foreach ($iterator as $key => $value) {
    4. var_dump($key);
    5. } 
    Что выведет?
     
  9. YSandro

    YSandro Старожил

    С нами с:
    7 апр 2011
    Сообщения:
    2.523
    Симпатии:
    2
    Выводит правильно список файлов с путями.
    Архив делаю вот так
    Код (PHP):
    1. <?php
    2. require_once 'SimpleZipArchive.php';
    3. $arc = new SimpleZipArchive('test.zip');
    4. $arc->AddDir = array('img');
    5. $arc->SimpleZip(); 
    В архиве test.zip оказывается только пустая папка img несмотря на то, что там есть файлы и ещё папка с файлом.
    Система: Win7 64, Apache 2.2.21 (win64), php-5.3.10-Win32-VC9-x64