#11 2009.11.20 14:11

Fuelen
Участник
Зарегистрирован: 2009.06.22
Сообщений: 229
Карма: 5
Профиль

Re: добавление файлов с помощью PclZip

10, Или 0
Добавлено спустя   2 минуты  1 секунду:
Аффтар, юзай ZipArchive


на хую вас вертів

Неактивен

#12 2009.11.20 14:21

Gemorroj
Administrator
Откуда: Белоруссия
Зарегистрирован: 2007.11.03
Сообщений: 6593
Карма: 107
Профиль Веб-сайт

Re: добавление файлов с помощью PclZip

Fuelen, 0 лучше не использовать, т.к. это может привести к неубиваемому процессу.
И насчет ZipArchive тоже не соглашусь) У PclZip больше возможностей.

Активен

#13 2009.11.20 17:31

WebGraf
Участник
Зарегистрирован: 2009.07.21
Сообщений: 134
Карма: 1
Профиль

Re: добавление файлов с помощью PclZip

А что скажете на счет такого класа

Код:

1
span style="color: #0000BB"><?php/** * Class to dynamically create a zip file (archive) * * @author Rochak Chauhan */class createZip { var $compressedData = array(); var $centralDirectory = array(); // central directory var $endOfCentralDirectory = "\x50\x4b\x05\x06\x00\x00\x00\x00"; //end of Central directory record var $oldOffset = 0; /** * Function to create the directory where the file(s) will be unzipped * * @param $directoryName string * */ function addDirectory($directoryName) { $directoryName = str_replace("\\", "/", $directoryName); $feedArrayRow = "\x50\x4b\x03\x04"; $feedArrayRow .= "\x0a\x00"; $feedArrayRow .= "\x00\x00"; $feedArrayRow .= "\x00\x00"; $feedArrayRow .= "\x00\x00\x00\x00"; $feedArrayRow .= pack("V",0); $feedArrayRow .= pack("V",0); $feedArrayRow .= pack("V",0); $feedArrayRow .= pack("v", strlen($directoryName) ); $feedArrayRow .= pack("v", 0 ); $feedArrayRow .= $directoryName; $feedArrayRow .= pack("V",0); $feedArrayRow .= pack("V",0); $feedArrayRow .= pack("V",0); $this -> compressedData[] = $feedArrayRow; $newOffset = strlen(implode("", $this->compressedData)); $addCentralRecord = "\x50\x4b\x01\x02"; $addCentralRecord .="\x00\x00"; $addCentralRecord .="\x0a\x00"; $addCentralRecord .="\x00\x00"; $addCentralRecord .="\x00\x00"; $addCentralRecord .="\x00\x00\x00\x00"; $addCentralRecord .= pack("V",0); $addCentralRecord .= pack("V",0); $addCentralRecord .= pack("V",0); $addCentralRecord .= pack("v", strlen($directoryName) ); $addCentralRecord .= pack("v", 0 ); $addCentralRecord .= pack("v", 0 ); $addCentralRecord .= pack("v", 0 ); $addCentralRecord .= pack("v", 0 ); $ext = "\x00\x00\x10\x00"; $ext = "\xff\xff\xff\xff"; $addCentralRecord .= pack("V", 16 ); $addCentralRecord .= pack("V", $this -> oldOffset ); $this -> oldOffset = $newOffset; $addCentralRecord .= $directoryName; $this -> centralDirectory[] = $addCentralRecord; } /** * Function to add file(s) to the specified directory in the archive * * @param $directoryName string * */ function addFile($data, $directoryName) { $directoryName = str_replace("\\", "/", $directoryName); $feedArrayRow = "\x50\x4b\x03\x04"; $feedArrayRow .= "\x14\x00"; $feedArrayRow .= "\x00\x00"; $feedArrayRow .= "\x08\x00"; $feedArrayRow .= "\x00\x00\x00\x00"; $uncompressedLength = strlen($data); $compression = crc32($data); $gzCompressedData = gzcompress($data); $gzCompressedData = substr( substr($gzCompressedData, 0, strlen($gzCompressedData) - 4), 2); $compressedLength = strlen($gzCompressedData); $feedArrayRow .= pack("V",$compression); $feedArrayRow .= pack("V",$compressedLength); $feedArrayRow .= pack("V",$uncompressedLength); $feedArrayRow .= pack("v", strlen($directoryName) ); $feedArrayRow .= pack("v", 0 ); $feedArrayRow .= $directoryName; $feedArrayRow .= $gzCompressedData; $feedArrayRow .= pack("V",$compression); $feedArrayRow .= pack("V",$compressedLength); $feedArrayRow .= pack("V",$uncompressedLength); $this -> compressedData[] = $feedArrayRow; $newOffset = strlen(implode("", $this->compressedData)); $addCentralRecord = "\x50\x4b\x01\x02"; $addCentralRecord .="\x00\x00"; $addCentralRecord .="\x14\x00"; $addCentralRecord .="\x00\x00"; $addCentralRecord .="\x08\x00"; $addCentralRecord .="\x00\x00\x00\x00"; $addCentralRecord .= pack("V",$compression); $addCentralRecord .= pack("V",$compressedLength); $addCentralRecord .= pack("V",$uncompressedLength); $addCentralRecord .= pack("v", strlen($directoryName) ); $addCentralRecord .= pack("v", 0 ); $addCentralRecord .= pack("v", 0 ); $addCentralRecord .= pack("v", 0 ); $addCentralRecord .= pack("v", 0 ); $addCentralRecord .= pack("V", 32 ); $addCentralRecord .= pack("V", $this -> oldOffset ); $this -> oldOffset = $newOffset; $addCentralRecord .= $directoryName; $this -> centralDirectory[] = $addCentralRecord; } /** * Fucntion to return the zip file * * @return zipfile (archive) */ function getZippedfile() { $data = implode("", $this -> compressedData); $controlDirectory = implode("", $this -> centralDirectory); return $data. $controlDirectory. $this -> endOfCentralDirectory. pack("v", sizeof($this -> centralDirectory)). pack("v", sizeof($this -> centralDirectory)). pack("V", strlen($controlDirectory)). pack("V", strlen($data)). "\x00\x00"; } /** * * Function to force the download of the archive as soon as it is created * * @param archiveName string - name of the created archive file */ function forceDownload($archiveName, $get_file_name) { $headerInfo = ''; if(ini_get('zlib.output_compression')) { ini_set('zlib.output_compression', 'Off'); } // Security checks if( $archiveName == "" ) { echo "<html><title>var Photo Directory - Download </title><body><BR><B>ERROR:</B> The download file was NOT SPECIFIED.</body></html>"; exit; } elseif ( ! file_exists( $archiveName ) ) { echo "<html><title>var Photo Directory - Download </title><body><BR><B>ERROR:</B> File not found.</body></html>"; exit; } header("Pragma: public"); header("Expires: 0"); header("Cache-Control: must-revalidate, post-check=0, pre-check=0"); header("Cache-Control: private",false); header("Content-Type: application/java-archive"); header("Content-Disposition: attachment; filename=".$get_file_name.";" ); header("Content-Transfer-Encoding: binary"); header("Content-Length: ".filesize($archiveName)); readfile("$archiveName"); }}?>

Неактивен

#14 2009.11.20 19:55

Gemorroj
Administrator
Откуда: Белоруссия
Зарегистрирован: 2007.11.03
Сообщений: 6593
Карма: 107
Профиль Веб-сайт

Re: добавление файлов с помощью PclZip

скажу точно тоже самое. PclZip умеет много больше.

Активен

#15 2009.11.21 11:05

WebGraf
Участник
Зарегистрирован: 2009.07.21
Сообщений: 134
Карма: 1
Профиль

Re: добавление файлов с помощью PclZip

Код:

1
span style="color: #0000BB"><?phpreguire_once("pclzip.lib.php"); //подключаем библиотекуif (file_exists("archive.zip")) {unlink("archive.zip");} //удаляем старый файл архива$arc = new PclZip("archive.zip"); //создаем новый архив$arc->add("page.htm"); //добавляем файл page.htm в архив$d = opendir("img"); //добавляем также в архив все файлы из папки imgwhile ($f = readdir($d)) {if (!file_exists($f)) {$arc->add("./img/".$f);};}?>

вот так я пробовал создавать архив
уточните PclZip сделает это качественние чем клас выше или просто он больше всего умеет

Неактивен

#16 2009.11.21 12:32

Gemorroj
Administrator
Откуда: Белоруссия
Зарегистрирован: 2007.11.03
Сообщений: 6593
Карма: 107
Профиль Веб-сайт

Re: добавление файлов с помощью PclZip

больше умеет. допустим, чтение папки, как сделано у тебя, в pclzip можно не делать, а просто указать папку которую нужно добавить.

Активен

#17 2009.11.21 12:40

WebGraf
Участник
Зарегистрирован: 2009.07.21
Сообщений: 134
Карма: 1
Профиль

Re: добавление файлов с помощью PclZip

WebGraf написал:

Код:

1
span style="color: #0000BB"><?phpreguire_once("pclzip.lib.php"); //подключаем библиотекуif (file_exists("archive.zip")) {unlink("archive.zip");} //удаляем старый файл архива$arc = new PclZip("archive.zip"); //создаем новый архив$arc->add("page.htm"); //добавляем файл page.htm в архив$d = opendir("img"); //добавляем также в архив все файлы из папки imgwhile ($f = readdir($d)) {if (!file_exists($f)) {$arc->add("./img/".$f);};}?>

1. Что в этом коде неверно или чего нехватает?
2. по скорости работы PclZip будет лучше?

Неактивен

#18 2009.11.21 13:04

Gemorroj
Administrator
Откуда: Белоруссия
Зарегистрирован: 2007.11.03
Сообщений: 6593
Карма: 107
Профиль Веб-сайт

Re: добавление файлов с помощью PclZip

не reguire_once, а require_once

Код:

1
2
3
4
require 'pclzip.lib.php'; //подключаем библиотеку
 
$arc = new PclZip('archive.zip'); //создаем объект
$arc->create('page.htm,img', PCLZIP_OPT_REMOVE_ALL_PATH); // добавляем файлы

Добавлено спустя    48 секунд:
по скорости не знаю. в любом случае, по скорости будут быстрее встроенные в PHP функции для работы с архивами.

Активен

#19 2009.11.21 13:06

WebGraf
Участник
Зарегистрирован: 2009.07.21
Сообщений: 134
Карма: 1
Профиль

Re: добавление файлов с помощью PclZip

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

Отредактировано WebGraf (2009.11.21 13:13)

Неактивен

#20 2009.11.21 13:08

Gemorroj
Administrator
Откуда: Белоруссия
Зарегистрирован: 2007.11.03
Сообщений: 6593
Карма: 107
Профиль Веб-сайт

Re: добавление файлов с помощью PclZip

WebGraf написал:

ну раз встроенные то нужно сервак ковырять

логики что-то не уловил..)
если файлы не добавляет, проверь пути к ним.

Активен

Дополнительно

forum.wapinet.ru

PunBB Mod v0.6.2
0.012 s