Вы не зашли.
Главная » PHP » добавление файлов с помощью PclZip
#11. Fuelen Off (5)
Участник
2009.11.20 14:02
10, Или 0
Добавлено спустя   2 минуты  1 секунду:
Аффтар, юзай ZipArchive
на хую вас вертів
#12. Gemorroj Off (107)
Administrator
2009.11.20 14:02
Fuelen, 0 лучше не использовать, т.к. это может привести к неубиваемому процессу.
И насчет ZipArchive тоже не соглашусь) У PclZip больше возможностей.
#13. WebGraf Off (1)
Участник
2009.11.20 17:05
А что скажете на счет такого класа
Код:
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. Gemorroj Off (107)
Administrator
2009.11.20 19:07
скажу точно тоже самое. PclZip умеет много больше.
#15. WebGraf Off (1)
Участник
2009.11.21 11:11
Код:
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. Gemorroj Off (107)
Administrator
2009.11.21 12:12
больше умеет. допустим, чтение папки, как сделано у тебя, в pclzip можно не делать, а просто указать папку которую нужно добавить.
#17. WebGraf Off (1)
Участник
2009.11.21 12:12
WebGraf написал:
Код:
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. Gemorroj Off (107)
Administrator
2009.11.21 13:01
не reguire_once, а require_once
Код:
require 'pclzip.lib.php'; //подключаем библиотеку
 
$arc = new PclZip('archive.zip'); //создаем объект
$arc->create('page.htm,img', PCLZIP_OPT_REMOVE_ALL_PATH); // добавляем файлы
Добавлено спустя    48 секунд:
по скорости не знаю. в любом случае, по скорости будут быстрее встроенные в PHP функции для работы с архивами.
#19. WebGraf Off (1)
Участник
2009.11.21 13:01
а ну это я исправил был у себя. код скопирован из страницы интрернета.
и вот архив создает, а добавить нехочет.
ну раз встроенные то нужно сервак ковырять
иду тогда сервак мучить
Отредактировано WebGraf (2009.11.21 13:01)
#20. Gemorroj Off (107)
Administrator
2009.11.21 13:01
WebGraf написал:
ну раз встроенные то нужно сервак ковырять
логики что-то не уловил..)
если файлы не добавляет, проверь пути к ним.
Страниц: 1 2 3 4 Все
Главная
WEB
PunBB Mod v0.6.2
0.015 s