Content-Type: multipart/related; start=; boundary=----------n28MgCcqd8lLVaBL0t1y1s Content-Location: http://a-panov.ru/2009/09/%d1%80%d0%b0%d0%b1%d0%be%d1%82%d0%b0-%d1%81-zip-%d0%b0%d1%80%d1%85%d0%b8%d0%b2%d0%b0%d0%bc%d0%b8-%d0%b2-php/ Subject: =?utf-8?Q?=D1=80=D0=B0=D0=B1=D0=BE=D1=82=D0=B0=20=D1=81=20zip-=D0=B0=D1=80=D1=85=D0=B8=D0=B2=D0=B0=D0=BC=D0=B8=20=D0=B2=20php?= MIME-Version: 1.0 ------------n28MgCcqd8lLVaBL0t1y1s Content-Disposition: inline; filename=default.htm Content-Type: text/html; charset=UTF-8; name=default.htm Content-ID: Content-Location: http://a-panov.ru/2009/09/%d1%80%d0%b0%d0%b1%d0%be%d1%82%d0%b0-%d1%81-zip-%d0%b0%d1%80%d1%85%d0%b8%d0%b2%d0%b0%d0%bc%d0%b8-%d0%b2-php/ Content-Transfer-Encoding: 8bit работа с zip-архивами в php

работа с zip-архивами в php

andi [2009-09-23 20:00]

начиная с php версии 5.2, появилась замечательная фишка: работа с zip-архивами (ранее для этих целей использовались команды оболочки либо утилита pclzip.lib.php).

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

т. к. это соответствующий класс, то сначала требуется создать его экземпляр, например, так:

$zip = new ZipArchive;

теперь, нужно задать zip-файл, над которым будут производиться разного рода манипуляции (фактически, процесс похож на работу с функцией fopen(), с тем исключением, что здесь вызываются соответствующие методы класса):

$zip->open('test.zip', $flags);

где $flags может принимать следующие значения:
значение не задано — открыть файл для извлечения файлов;
ZIPARCHIVE::OVERWRITE — перезаписать файл;
ZIPARCHIVE::CREATE — создать файл архива, если он не существует.
имеются ещё некоторые значения, но с ними (если уж это действительно понадобится) можно ознакомиться на соответствующей странице мануала.

когда архив открыт, фактически, его можно рассматривать как текущую папку, с которой можно производить разные манипуляции.
и теперь самое интересное: несколько методов, которых, на мой вгляд, хватит для выполнения 99.9% поставленных задач. итак, вот они:

  • bool addEmptyDir(string $dirname)создание в архиве пустого директория;
  • bool addFile(string $filename[, string $localname])добавляет в архив файл $filename под именем $localname. если $localname не задано, файл добавляет в корень архива под именем $filename с сохранением пути. чтобы было понятнее:
    $zip->addFile('/var/www/site/index.php');создаст в архиве файл index.php, расположенный по адресу var/www/site/;
  • bool addFromString(string $localname, string $contents)создание в архиве файла $localname у содержимым из переменной $contents;
  • bool deleteName(string $name)удаляет из архива файл или директорий с именем $name (для удаления директория необходимо, чтобы путь заканчивался слешем «/»!). удаляемый директорий должен быть пустым (не иметь файлов или вложенных директориев)!;
  • bool extractTo(string $destination [, mixed $entries ]) — распаковывает файл/файлы, указанные в $entries (может быть имя файла/папки, либо список имён) в директорий, заданный переменной $destination. если $entries не задано, распаковывается архив целиком;
  • bool renameName(string $name, string $newname) — переименовывает (или переносит) файл или пустой директорий, заданный переменной $name. новое имя задаётся переменной $newname;
  • mixed statName(name $name[, int $flags]) — получает информацию о файле или директории $name, как то: размер, crc (контрольная сумма), время добавления и ещё некоторые. переменная $flags позволяет определить, как будет вестись поиск файла, например, если задать значение ZIPARCHIVE::FL_NOCASE, поиск будет вестись без учёта регистра символов;
  • bool unchangeAll() — откатывает все сделанные изменения;
  • bool unchangeName(string $name) — откатить все изменения, сделанные с файлом (каталогом) $name.

но лучше, конечно, всё посмотреть на примере. например, таком:


<?php
$testzip = 'mytest.zip';
$zip = new ZipArchive;
if (true === $zip->open($testzip, ZIPARCHIVE::CREATE)) {
$zip->addEmptyDir('dir1'); # создаём директорий
$zip->addEmptyDir('dir2'); # ещё один
# поместим тестовую строку в архив, в виде текстового файл
$zip->addFromString('dir1/123.txt', 'test string');
$zip->addEmptyDir('dir3'); # создаём ещё один директорий
# удаляем директорий, созданный вторим (внимание, слеш!!!)
$zip->deleteName('dir2/');
# поместим в архив текущий файл
$zip->addFile(__FILE__, 'dir3/' . pathinfo(__FILE__, PATHINFO_FILENAME));
$zip->close();
} else echo 'не удалось создать архив' . $testzip;
?>

после всех манипуляций, полученный zip-архив должен содержать 2 папки: dir1 и dir2, а так по 1 файлу в каждой папке.

php предоставляет великое множество “фишечек”. собственно, именно из-за этого (и заслуженно!) он пользуется такой популярностью.

если тема показалась интересной, ‘тонко’ намекну: с помощью php можно также работать с популярным в среде линукс архивом формата bzip2 (который сжимает очень хорошо, но не умеет работать с файлами/директориями). также поддерживается известный архиватор rar, правда, только для распаковки файлов (см. функции rar_open(), rar_entry_get() и метод extract()).


Оставлено 1 комментарий

  1. WRC_S:

    А скажите можно данным классом поставить пароль на сам архив? очень буду благодарен,а то не где не написано как при помощи PHP можно поставить пароль на zip архив!

Оставить комментарий

Я не робот!

------------n28MgCcqd8lLVaBL0t1y1s Content-Disposition: inline Content-Type: text/css; charset=UTF-8 Content-Location: http://a-panov.ru/wp-content/themes/pumka/style.css Content-Transfer-Encoding: 8bit /* Theme Name: Pumka Description: Pumka-templates Version: 1.0 Author: Pumka Author URI: http://pumka.ru/ */ html,body{border:0;margin:0;padding:10px 20px;background-color:#f9f9f9}b{font-weight:normal}code{background-color:#eee;text-align:left}#carrier,#substrate,#top{border:0}#carrier,#top{padding:0}#substrate,#top{margin:0}#carrier{margin:0 auto;width:952px;text-align:center}#substrate{width:950px;border:0;margin:0;padding:1px}#top{height:69px;background:#e6e6e6 url("images/top.jpg")}#hmenu{background-color:#e6e6e6;text-align:left;padding:5px;color:#227;font-weight:bold}#hmenu table{width:100%}#hmenu table td.mw{width:1%;white-space:nowrap}#title{width:50%;text-align:right}#title h2{font-size:200%;margin:0}#title h2 a{color:#1616A7}a{color:#3f3fb3}a:hover{color:#00f}a:link{color:#228}#tmenu{padding:5px;background-color:#a4a4f6;color:#1616A7;height:1.2em;text-align:left;font-weight:bold;font-family:sans-serif}#tmenu ul{list-style-position:inside;list-style-type:none;margin:0 0 0 -1em;paddign:0}#tmenu ul li{float:left;margin:0 1.5em 0 0;padding:0}#tmenu ul ul{display:none}#content{background:#f9f9f9 url("images/bgq.png") repeat-y;padding:10px 10px 0 10px}#text{padding:0;text-align:justify;width:640px;margin:0;padding:0 10px 10px 0;float:left}#text h1{font-size:125%;font-family:sans-serif}#text h2{font-size:125%}#text hr{border:0;margin:1.5em 0;color:#a4a4f6;background-color:#a4a4f6;height:1px}#text dl.commentlist{display:block;overflow:hidden;margin:0 0 0.5em 0;padding:0}#text dl.commentlist>dt{clear:left;float:left;width:140px;display:block;margin:0 0 0.5em 0;padding:0;overflow:hidden}#text dl.commentlist>dt div.number{float:left;border:1px dashed #a4a4f6;padding:0 5px;font-weight:bold}#text dl.commentlist>dt div.nick,#text dl.commentlist>dt div.nick a{clear:both;font-weight:bold}#text dl.commentlist>dt div.time{margin-top:0.25em;font-size:85%;color:#a4a4f6}#text dl.commentlist>dd{display:block;margin:0 0 0.5em 150px;padding:0 0 0 5px;border-left:1px solid #a4a4f6;overflow:hidden}#text dl.commentlist>dd.clear{clear:both;margin:0.5em 0;border-bottom:1px dashed #a4a4f6}#text ol.commentlist li ul{border-left:1px solid #ddd;font-size:110%;list-style-type:none}#text ol.commentlist li .avatar{float:right;margin-right:5px;border:1px dotted #ccc;padding:2px}#text ol.commentlist>li{margin:5px 0}#text div.comment-meta{margin-top:0.25em;font-size:85%;color:#a4a4f6}#rmenu{width:250px;margin-left:680px;text-align:left;padding:0 17px 10px 3px}#rmenu ul{list-style-position:inside;list-style-type:none;margin:0;padding-left:1.5em}#rmenu>ul{padding:0}#rmenu ul li{font:italic normal 110%;letter-spacing:0.1em;margin-top:0.15em;padding-bottom:0}#rmenu>ul>li{margin-bottom:1em;font-weight:bold;font-family:sans-serif}#rmenu>ul>li *{font-weight:normal}#footer{padding:5px;font-size:85%;text-align:left;background-color:#a4a4f6;clear:both;margin:0 -10px}.wmin{width:1px}.nw{white-space:nowrap}.small{font-size:85%}.very_small{font-size:70%}textarea#comment{width:95%} ------------n28MgCcqd8lLVaBL0t1y1s Content-Disposition: inline Content-Type: image/jpeg Content-Location: http://a-panov.ru/wp-content/themes/pumka/images/top.jpg Content-Transfer-Encoding: Base64 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 EDJCOSNxyRuOSb8C434vk/8AEH8B/in+D//Z ------------n28MgCcqd8lLVaBL0t1y1s Content-Disposition: inline Content-Type: image/png Content-Location: http://a-panov.ru/wp-content/themes/pumka/images/bgq.png Content-Transfer-Encoding: Base64 iVBORw0KGgoAAAANSUhEUgAAA7YAAAA9CAYAAACZZfUeAAAACXBIWXMAAAsTAAAL EwEAmpwYAAAKT2lDQ1BQaG90b3Nob3AgSUNDIHByb2ZpbGUAAHjanVNnVFPpFj33 3vRCS4iAlEtvUhUIIFJCi4AUkSYqIQkQSoghodkVUcERRUUEG8igiAOOjoCMFVEs DIoK2AfkIaKOg6OIisr74Xuja9a89+bN/rXXPues852zzwfACAyWSDNRNYAMqUIe EeCDx8TG4eQuQIEKJHAAEAizZCFz/SMBAPh+PDwrIsAHvgABeNMLCADATZvAMByH /w/qQplcAYCEAcB0kThLCIAUAEB6jkKmAEBGAYCdmCZTAKAEAGDLY2LjAFAtAGAn f+bTAICd+Jl7AQBblCEVAaCRACATZYhEAGg7AKzPVopFAFgwABRmS8Q5ANgtADBJ V2ZIALC3AMDOEAuyAAgMADBRiIUpAAR7AGDIIyN4AISZABRG8lc88SuuEOcqAAB4 mbI8uSQ5RYFbCC1xB1dXLh4ozkkXKxQ2YQJhmkAuwnmZGTKBNA/g88wAAKCRFRHg g/P9eM4Ors7ONo62Dl8t6r8G/yJiYuP+5c+rcEAAAOF0ftH+LC+zGoA7BoBt/qIl 7gRoXgugdfeLZrIPQLUAoOnaV/Nw+H48PEWhkLnZ2eXk5NhKxEJbYcpXff5nwl/A V/1s+X48/Pf14L7iJIEyXYFHBPjgwsz0TKUcz5IJhGLc5o9H/LcL//wd0yLESWK5 WCoU41EScY5EmozzMqUiiUKSKcUl0v9k4t8s+wM+3zUAsGo+AXuRLahdYwP2SycQ WHTA4vcAAPK7b8HUKAgDgGiD4c93/+8//UegJQCAZkmScQAAXkQkLlTKsz/HCAAA RKCBKrBBG/TBGCzABhzBBdzBC/xgNoRCJMTCQhBCCmSAHHJgKayCQiiGzbAdKmAv 1EAdNMBRaIaTcA4uwlW4Dj1wD/phCJ7BKLyBCQRByAgTYSHaiAFiilgjjggXmYX4 IcFIBBKLJCDJiBRRIkuRNUgxUopUIFVIHfI9cgI5h1xGupE7yAAygvyGvEcxlIGy UT3UDLVDuag3GoRGogvQZHQxmo8WoJvQcrQaPYw2oefQq2gP2o8+Q8cwwOgYBzPE bDAuxsNCsTgsCZNjy7EirAyrxhqwVqwDu4n1Y8+xdwQSgUXACTYEd0IgYR5BSFhM WE7YSKggHCQ0EdoJNwkDhFHCJyKTqEu0JroR+cQYYjIxh1hILCPWEo8TLxB7iEPE NyQSiUMyJ7mQAkmxpFTSEtJG0m5SI+ksqZs0SBojk8naZGuyBzmULCAryIXkneTD 5DPkG+Qh8lsKnWJAcaT4U+IoUspqShnlEOU05QZlmDJBVaOaUt2ooVQRNY9aQq2h tlKvUYeoEzR1mjnNgxZJS6WtopXTGmgXaPdpr+h0uhHdlR5Ol9BX0svpR+iX6AP0 dwwNhhWDx4hnKBmbGAcYZxl3GK+YTKYZ04sZx1QwNzHrmOeZD5lvVVgqtip8FZHK CpVKlSaVGyovVKmqpqreqgtV81XLVI+pXlN9rkZVM1PjqQnUlqtVqp1Q61MbU2ep O6iHqmeob1Q/pH5Z/YkGWcNMw09DpFGgsV/jvMYgC2MZs3gsIWsNq4Z1gTXEJrHN 2Xx2KruY/R27iz2qqaE5QzNKM1ezUvOUZj8H45hx+Jx0TgnnKKeX836K3hTvKeIp G6Y0TLkxZVxrqpaXllirSKtRq0frvTau7aedpr1Fu1n7gQ5Bx0onXCdHZ4/OBZ3n U9lT3acKpxZNPTr1ri6qa6UbobtEd79up+6Ynr5egJ5Mb6feeb3n+hx9L/1U/W36 p/VHDFgGswwkBtsMzhg8xTVxbzwdL8fb8VFDXcNAQ6VhlWGX4YSRudE8o9VGjUYP jGnGXOMk423GbcajJgYmISZLTepN7ppSTbmmKaY7TDtMx83MzaLN1pk1mz0x1zLn m+eb15vft2BaeFostqi2uGVJsuRaplnutrxuhVo5WaVYVVpds0atna0l1rutu6cR p7lOk06rntZnw7Dxtsm2qbcZsOXYBtuutm22fWFnYhdnt8Wuw+6TvZN9un2N/T0H DYfZDqsdWh1+c7RyFDpWOt6azpzuP33F9JbpL2dYzxDP2DPjthPLKcRpnVOb00dn F2e5c4PziIuJS4LLLpc+Lpsbxt3IveRKdPVxXeF60vWdm7Obwu2o26/uNu5p7ofc n8w0nymeWTNz0MPIQ+BR5dE/C5+VMGvfrH5PQ0+BZ7XnIy9jL5FXrdewt6V3qvdh 7xc+9j5yn+M+4zw33jLeWV/MN8C3yLfLT8Nvnl+F30N/I/9k/3r/0QCngCUBZwOJ gUGBWwL7+Hp8Ib+OPzrbZfay2e1BjKC5QRVBj4KtguXBrSFoyOyQrSH355jOkc5p DoVQfujW0Adh5mGLw34MJ4WHhVeGP45wiFga0TGXNXfR3ENz30T6RJZE3ptnMU85 ry1KNSo+qi5qPNo3ujS6P8YuZlnM1VidWElsSxw5LiquNm5svt/87fOH4p3iC+N7 F5gvyF1weaHOwvSFpxapLhIsOpZATIhOOJTwQRAqqBaMJfITdyWOCnnCHcJnIi/R NtGI2ENcKh5O8kgqTXqS7JG8NXkkxTOlLOW5hCepkLxMDUzdmzqeFpp2IG0yPTq9 MYOSkZBxQqohTZO2Z+pn5mZ2y6xlhbL+xW6Lty8elQfJa7OQrAVZLQq2QqboVFoo 1yoHsmdlV2a/zYnKOZarnivN7cyzytuQN5zvn//tEsIS4ZK2pYZLVy0dWOa9rGo5 sjxxedsK4xUFK4ZWBqw8uIq2Km3VT6vtV5eufr0mek1rgV7ByoLBtQFr6wtVCuWF fevc1+1dT1gvWd+1YfqGnRs+FYmKrhTbF5cVf9go3HjlG4dvyr+Z3JS0qavEuWTP ZtJm6ebeLZ5bDpaql+aXDm4N2dq0Dd9WtO319kXbL5fNKNu7g7ZDuaO/PLi8ZafJ zs07P1SkVPRU+lQ27tLdtWHX+G7R7ht7vPY07NXbW7z3/T7JvttVAVVN1WbVZftJ +7P3P66Jqun4lvttXa1ObXHtxwPSA/0HIw6217nU1R3SPVRSj9Yr60cOxx++/p3v dy0NNg1VjZzG4iNwRHnk6fcJ3/ceDTradox7rOEH0x92HWcdL2pCmvKaRptTmvtb Ylu6T8w+0dbq3nr8R9sfD5w0PFl5SvNUyWna6YLTk2fyz4ydlZ19fi753GDborZ7 52PO32oPb++6EHTh0kX/i+c7vDvOXPK4dPKy2+UTV7hXmq86X23qdOo8/pPTT8e7 nLuarrlca7nuer21e2b36RueN87d9L158Rb/1tWeOT3dvfN6b/fF9/XfFt1+cif9 zsu72Xcn7q28T7xf9EDtQdlD3YfVP1v+3Njv3H9qwHeg89HcR/cGhYPP/pH1jw9D BY+Zj8uGDYbrnjg+OTniP3L96fynQ89kzyaeF/6i/suuFxYvfvjV69fO0ZjRoZfy l5O/bXyl/erA6xmv28bCxh6+yXgzMV70VvvtwXfcdx3vo98PT+R8IH8o/2j5sfVT 0Kf7kxmTk/8EA5jz/GMzLdsAAAAgY0hSTQAAeiUAAICDAAD5/wAAgOkAAHUwAADq YAAAOpgAABdvkl/FRgAABG9JREFUeNrs20FK7EAUhtHa/6oyiO4k0IREUkqJAeE6 aAoimIFoNSQ5gw8cdXN4kJsffenpeYhxeo11XU/bvOQoJU7v5OXl5eXl5eV9pLe+ R0ZE+u+2n9/6uyQdp71nQzJseXl5eXl5eXl5DVtJhq1Dw8vLy8vLy8tr2Bq2kgxb h4aXl5eXl5eX17A1bCUZtg4NLy8vLy8vL69hK8mwdWh4eXl5eXl5eXkNW0mGrUPD y8vLy8vLy2vYGraSDFuHhpeXl5eXl5fXsDVsJRm2DisvLy8vLy8vr2ErybB1aHh5 eXl5eXl5eQ1bSYatQ8PLy8vLy8vLa9gatpIMW4eGl5eXl5eXl9ewlWTYGrYOKy8v Ly8vLy+vYSvJsHVoeHl5eXl5eXkNW8NWkmHr0PDy8vLy8vLyGraGrSTD1qHh5eXl 5eXl5TVsJRm2hi0vLy8vLy8vL69hK8mwdWh4eXl5eXl5eQ1bw1aSYevQ8PLy8vLy 8vIatoatJMPWoeHl5eXl5eXlNWwlGbYODS8vLy8vLy8vr2ErybB1aHh5eXl5eXl5 DVvDVpJh69Dw8vLy8vLy8hq2hq0kw9Zh5eXl5eXl5eU1bCUZtg4NLy8vLy8vLy+v YSvJsHVoeHl5eXl5eXkNW8NWkmHr0PDy8vLy8vLyGraSDFvD1mHl5eXl5eXl5TVs JRm2Dg0vLy8vLy8vr2Fr2EoybB0aXl5eXl5eXl7D1rCVZNg6NLy8vLy8vLy8hq0k w9aw5eXl5eXl5eXlNWwlGbYODS8vLy8vLy+vYWvYSjJsHRpeXl5eXl5eXsPWsJVk 2Do0vLy8vLy8vLyGrSTD1qHh5eXl5eXl5eU1bCUZtg4NLy8vLy8vL69ha9hKMmwd Gl5eXl5eXl5ew9awlWTYOqy8vLy8vLy8vIatJMPWoeHl5eXl5eXl5TVsJRm2Dg0v Ly8vLy8vr2Fr2EoybB0aXl5eXl5eXl7DVpJha9jy8vLy8vLy8vIatpIMW4eGl5eX l5eXl9ewNWwlGbYODS8vLy8vLy+vYWvYSjJsHRpeXl5eXl5eXsNWkmHr0PDy8vLy 8vLy8hq2kgxbh4aXl5eXl5eX17A1bCUZtg4NLy8vLy8vL69ha9hKMmwdVl5eXl5e Xl5ew1aSYevQ8PLy8vLy8vLyGraSDFuHhpeXl5eXl5fXsDVsJRm2Dg0vLy8vLy8v r2Fr2EqGrWHrsPLy8vLy8vLyGraSDFuHhpeXl5eXl5eX17CVZNg6NLy8vLy8vLy8 hq1hK8mwdWh4eXl5eXl5eQ1bSYbtdtjmixyafLHDysvLy8vLy8vbetjmxsM2N/8u SUcctt+fDanvh7iNOcbpvL2Vjygl4jbmyPkzppd3Xl5eXl5eXl7eP3rre2SLl9ft 57f+LknHae/ZkPp+iFJCkiRJ+lUtx+a85Oi6Iebl/luZ+rMXe8lvbH96NqSuu/9N 8tmr/+flKvHy8vIexVrz78vLe7zqe2SLl9f6+fOSY/uzF3vp2u09G74AAAD//wMA a16Q0iExjTsAAAAASUVORK5CYII= ------------n28MgCcqd8lLVaBL0t1y1s--