Вы не зашли.
Главная » PHP » добавление файлов с помощью PclZip
#1. WebGraf Off (1)
Участник
2009.11.20 05:05
пишу
$arc->add("sss/file.jpg");
но архив остается без файла этого.
Как правильно добавить файл?
#2. Gemorroj Off (107)
Administrator
2009.11.20 09:09
полный код давай.
#3. WebGraf Off (1)
Участник
2009.11.20 11:11
этот уже стер
использую другой
та же история
Добавлено спустя   1 минуту  8 секунд:
Код:
$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
Код:
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. Gemorroj Off (107)
Administrator
2009.11.20 11:11
Возможно, нет прав на перезапись zip архива.
#5. WebGraf Off (1)
Участник
2009.11.20 11:11
короче неважно каким образом это сделать. главное вот что. архив создается и в первом и во втором случае. а добавить в архив немогу ничего
Добавлено спустя   1 минуту  31 секунду:
права уже дописывал скриптом и меняет на 777
до этого использовал другой скрипт, но при нагрузке он работает через раз
Добавлено спустя   3 минуты  31 секунду:
а все решил проблему
извиняюсь что потревожил. во втором случае действительно ошибка в правах была. а первый точно неработал. наверное ошибка в самом модуле PclZip была
#6. Gemorroj Off (107)
Administrator
2009.11.20 12:12
Нет, в PCLZIP ошибок быть не могло. Возможно, ты не указал папку для временных файлов, или не указал что временных файлов создавать не нужно. Никогда не списывай проблемы на чужие продукты, тем боее на такие известные.
#7. WebGraf Off (1)
Участник
2009.11.20 12:12
видать это на сервере проблема. поставил этот скрипт. и 1 из 5 закачек прерывается. немогу понять что такое
Добавлено спустя   1 минуту  19 секунд:
ну с созданием архивов раньше неработал поэтому трудно
#8. Gemorroj Off (107)
Administrator
2009.11.20 13:01
попробуй заменить функцию forceDownload на эту http://wapinet.ru/forum/viewtopic.php?id=46
#9. WebGraf Off (1)
Участник
2009.11.20 13:01
Код:
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. Gemorroj Off (107)
Administrator
2009.11.20 13:01
set_time_limit(9999);
Страниц: 1 2 3 4 Все
Главная
WEB
PunBB Mod v0.6.2
0.019 s