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

//проверяем наличие нашего файла-переменной zpx в получаемых данных.

if (array_key_exists("zpx",$_FILES) && is_uploaded_file($_FILES['zpx']['tmp_name']) && ($_FILES['zpx']['size'] > 0)) {

                   // Создаем объект $zip. В качестве параметра передаем имя архива.
                   $zip = new PclZip($_FILES['zpx']['tmp_name']);

                  //это функция обработчик, которую будем применять для каждого файла из распакуемого архива
                  function myPostExtractCallBack($p_event, &$p_header) {

                       set_time_limit(3000); //задаем лимит времени выполнения скрипта

                          // ----- проверяем успешность распаковки
                        if ($p_header['status'] == 'ok') {
                            //читаю файл
                           $fd = fopen($p_header['filename'], "rb");
                           echo "<P>Обрабатываю построчно файл: ".$p_header['filename']."<BR>";
 
                            while (!feof ($fd)) {
                                  $buffer = fgets($fd, 12288); //сюда занесли строку из файла 12288 байт
                                  //... тут можно что-то сделать со строкой из файла
                            }
                            fclose ($fd);
                        }
                        // ----- удаляем файл
                        unlink($p_header['filename']);

                   return 1; //1 - распаковываем дальше, 2 - прерываем распаковку
                   }

                  //а здесь мы как раз разархивируем файл и вызываем эту функцию для каждого файла в архиве
                  $list = $zip->extract(PCLZIP_OPT_PATH, 'extract',
                                         PCLZIP_CB_POST_EXTRACT, 'myPostExtractCallBack');

                }

Надеюсь теперь Вам стало понятно, как работать на PHP с zip-архивами.

Add comment


Security code
Refresh