#1 2009.11.20 05:23

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

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

пишу
$arc->add("sss/file.jpg");
но архив остается без файла этого.
Как правильно добавить файл?

Неактивен

#2 2009.11.20 09:26

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

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

полный код давай.

Неактивен

#3 2009.11.20 11:38

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

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

этот уже стер
использую другой
та же история
Добавлено спустя   1 минуту  8 секунд:

Код:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
$createZip = new createZip;
$file_list = array();
recursiveReadDir (JAR_DATA_DIR, $file_list); // чтение директории с файлами
// Добавление файлов в архив
foreach($file_list as $c_file) {
if(is_dir($c_file)) { // создание директории в архиве
$c_file = str_replace(JAR_DATA_DIR, '', $c_file);
$createZip->addDirectory($c_file);
} else { // запись файлов
$fileContents = file_get_contents($c_file);
$c_file = str_replace(JAR_DATA_DIR, '', $c_file);
$createZip->addFile($fileContents, $c_file);
}
}

Добавлено спустя   3 минуты  1 секунду:
define ('JAR_DATA_DIR', JAR_ROOT_DIR.'resource/'); // папака с ресурсами JAVA приложения
Добавлено спустя   4 минуты  12 секунд:
инклудится отсюда CreateZipFile.class.php

Код:

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"); }}?>

Неактивен

#4 2009.11.20 11:49

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

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

Возможно, нет прав на перезапись zip архива.

Неактивен

#5 2009.11.20 11:53

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

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

короче неважно каким образом это сделать. главное вот что. архив создается и в первом и во втором случае. а добавить в архив немогу ничего
Добавлено спустя   1 минуту  31 секунду:
права уже дописывал скриптом и меняет на 777
до этого использовал другой скрипт, но при нагрузке он работает через раз
Добавлено спустя   3 минуты  31 секунду:
а все решил проблему
извиняюсь что потревожил. во втором случае действительно ошибка в правах была. а первый точно неработал. наверное ошибка в самом модуле PclZip была

Неактивен

#6 2009.11.20 12:16

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

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

Нет, в PCLZIP ошибок быть не могло. Возможно, ты не указал папку для временных файлов, или не указал что временных файлов создавать не нужно. Никогда не списывай проблемы на чужие продукты, тем боее на такие известные.

Неактивен

#7 2009.11.20 12:28

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

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

видать это на сервере проблема. поставил этот скрипт. и 1 из 5 закачек прерывается. немогу понять что такое
Добавлено спустя   1 минуту  19 секунд:
ну с созданием архивов раньше неработал поэтому трудно

Неактивен

#8 2009.11.20 13:00

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

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

попробуй заменить функцию forceDownload на эту http://wapinet.ru/forum/viewtopic.php?id=46

Неактивен

#9 2009.11.20 13:06

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

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

Код:

1
2
3
4
5
6
7
header('Accept-Ranges: bytes');
header('Content-Length: '.filesize(JARS_DIR.$fileName));
header('Content-Type: application/java-archive');
header('Connection: close');
header('Cache-control: no-cache');
header('Last-Modified: '.gmdate('r',time().' GMT'));
readfile(JARS_DIR.$fileName);

вот так отдаю файл

Неактивен

#10 2009.11.20 13:09

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

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

set_time_limit(9999);

Неактивен

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

forum.wapinet.ru

PunBB Mod v0.6.2
0.013 s