Если у вас возникли какие либо вопросы которые вы не смогли решить по нашим публикациям самостоятельно,
то ждем ваше обращение в нашей службе тех поддержки.
то ждем ваше обращение в нашей службе тех поддержки.
Администраторы «Битрикс» часто сталкиваются с необходимостью скачивать несколько файлов архивом либо распаковывать загруженный архив на сайте. В Панели управления есть для этого штатный функционал, но он требует ручного управления. Нельзя ли автоматизировать задачу? Можно:
1. Упаковка папки upload в zip - архив
Используем для этого класс CBXArchive
2. Распаковка загруженного файла
Используем для этого API «Битрикс»
Готово!
Назад в раздел
1. Упаковка папки upload в zip - архив
Используем для этого класс CBXArchive
// Под архивируемые файлы выделяется директорияв /upload/tmp/ $sDirTmpName = randString(); // Имя временной папки $sDirTmpPath = $_SERVER["DOCUMENT_ROOT"]."/upload/tmp/$sDirTmpName/"; // Серверный путь до временной папки if(mkdir($sDirTmpPath)) { // Создание временной папки foreach($arPackFiles as $k=>$sFileArcPath) { // Перебор всех файлов для архивирования $arPackFiles[$k] = $sDirTmpPath.basename($sFileArcPath); // Новый путь архивируемого файла copy($sFileArcPath, $arPackFiles[$k]); // И копирование во временную папку } // ... Создание архива из скопированных файлов foreach($arPackFiles as $file) if(is_file($file)) unlink($file); // Удаление скопированных файлов rmdir($sDirTmpPath); // Удаление временной папки }
2. Распаковка загруженного файла
Используем для этого API «Битрикс»
// Архив $sFilePathArc = $_SERVER["DOCUMENT_ROOT"]."/_import/webdata.zip"; // Директория для распаковки $sFilePathDst = $_SERVER["DOCUMENT_ROOT"]."/_import/"; // Параметры распаковки $arUnpackOptions = Array( "REMOVE_PATH" => $_SERVER["DOCUMENT_ROOT"], "UNPACK_REPLACE" => false ); // Распаковка $resArchiver = CBXArchive::GetArchive($sFilePathArc); $resArchiver->SetOptions($arUnpackOptions); $uRes = $resArchiver->Unpack($sFilePathDst); // Вывод ошибки или результата if (!$uRes) { echo $resArchiver->GetErrors(); } else { echo 'success'; }
Готово!
Назад в раздел
Подписаться на новые материалы раздела: