|
|
 12.4 Кб |
|
|
для: cheops
(18.07.2005 в 12:20)
| | Знал бы что такие грабли с этим зипом - не брался бы за писаниину.
Я думал что я все знаю о регистрах и стэке, а также об операциях в памяти - оказалось что ничего!
Был унижен французскими братьями хацкерами, оскарблен и опозорен.
Млина, ну не знаю я как создать средствами PHP в памяти двойной непрерывный поток и потом призвести смещение между двумя массивами не используя переменных. В C++ или асме на раз это делается, а в PHP пререыл все - даже близко не нашел. Еще получил головную боль с реализацией на PHP функций с callback вызовом - но потом вроде справился.
В принципе, можно теперь любой код из C++ и VB переводить в PHP без проблемм.
Пришлось братьям французам (за что им скажем большое спасибо) объяснять мне на пальцах как это делать и писать за меня часть кода. Так что господа - 30% кода - это заслуга коллег хацкеров из доброй страны Франция, а только 70% моя.
Зато теперь можно с байтами извращаться как угодно - создавать архивы, удалять файлы внутри архивов, добавлять файлы внутрь архива, распаковывать весь архив или определенные файлы, паковать каталоги с файлами и подкаталогами, сохранять пути при распаковке каталогов, и не сохранять пути - в общем все что умеет WinZip7.0 умеет и данный класс.
Понимает все форматы архивов вплоть до zip8.0.
Так как народу просто надо было раззиповать, то пока напишу как разархивировать файлы из архива, потом будет время напишу хэлпик по классу.
Юзать так: создаем файл например test.php в нем пишем код и при его вызове будет распакован архив по указанным параметрам.
<?php
//инклюдим класс
include_once("xpraptorzip.php");
//указываем путь к архиву
$flname=$_SERVER["DOCUMENT_ROOT"] . "/folder_gde_zip_legit/name_zip_file.zip";
//получаем хэдр нашего архива
$archive = new XPRAPTORZIP($flname);
//'zips' - это в какую папку распаковывать файл относительно положения вызывающего файла.
//Если не указать ничего то архив будет распакован в тот же каталог откуда вызван класс, вот так
//if ($archive->extract() == 0){die("Ошибка: " . $archive->errorInfo(true));}
if ($archive->extract(XPrptrZIP_OPT_PATH, 'zips') == 0){die("Ошибка: " . $archive->errorInfo(true));}
print "Распаковка завершена!<BR>\n";
?>
|
| |
|
|
|
|
|
|
|
для: XPraptor
(18.07.2005 в 04:19)
| | будем ждать :) | |
|
|
|
|
|
|
|
для: cheops
(17.07.2005 в 21:56)
| | ОК cheops! Немного бессонницы и постараюсь решить данный момент. Скорее всего код будет привязан к своему формату и многие внешние zip-ы понимать не будет, потому как они стандарты меняли уже раз 10 а у меня описание формата четырехлетней давности от которого отталкиваться можно. | |
|
|
|
|
|
|
|
для: XPraptor
(17.07.2005 в 21:48)
| | XPraptor а вы действительно напишите, а мы это в downloads выложим - вещь-то нужная... | |
|
|
|
|
|
|
|
для: Akira
(16.07.2005 в 15:25)
| | Дык, и про это я тебе говорил - что мне не надо было, я и не писал, но написать могу. Какая мне разница зазиповывать кодом текст или раззиповывать из зазипованного мною же кода в текст. | |
|
|
|
|
|
|
|
для: Akira
(17.07.2005 в 13:32)
| | Это понять можно - читать то как? Или можно читать только архивы заархивированные самим расширением, а не сторонними программами? | |
|
|
|
|
|
|
|
для: Akira
(15.07.2005 в 22:41)
| | Выяснил, полноченная работа возможна тольлко под Юникс.
В windows возможно только чтение не сжатых zip файлов | |
|
|
|
|
|
|
|
для: XPraptor
(16.07.2005 в 15:20)
| | Вообще смысл был с том, что бы закачивать зип файлы, а они потом распоковывались на сервере. | |
|
|
|
|
|
|
|
для: XPraptor
(16.07.2005 в 15:20)
| | Мне не zip надо , а unzip. | |
|
|
|
|
|
|
|
для: Akira
(16.07.2005 в 11:57)
| | Дык, я тебе и говорю, что на хостинге хоть конь в валенках, клас не привязан к .dll он зипует алгоритмом на PHP. На любом бесплатном хостинге нет zip.dll а классом можно зиповать везде. | |
|
|
|
|