Forums / National / Russian / Модули и плагины / Utf & zip архивы

Нужна помощь

Wadik
#1 2009-02-20 17:37
Доделываю проект на базе Cotonti и возникла досадная проблема. Есть txt файлы(кодировка WINDOWS-1251) и пару jpeg, которые на лету архивируются в zip файл. На седе все библиотеки по архивации работают нормально, а на cotonti совсем не хотят работать. Архив пользователю отдается, однако битый и без txt файлов внутри(jpeg файлы присутствуют).
Помогите пожалуйста! Очень не охото откатывать на seditio =(
Ratibor
#2 2009-02-20 18:19
# Wadik : Доделываю проект на базе Cotonti и возникла досадная проблема. Есть txt файлы(кодировка WINDOWS-1251)
WINDOWS-1251 - это кодировка текста или имена файлов на русском ?
Если первое, то это никак не должно влиять, если конечно юзаешь нормальные скрипты для архивации.
Не задавай глупых вопросов, не услышишь вранья.
This post was edited by Ratibor (2009-02-20 18:49, 15 years ago)
Wadik
#3 2009-02-20 18:25
Ratibor, у меня текст в 1251. А в названиях фалов только цифры. Пробовал и pear подключать и классы с phpclasses. Подскажи пожалуйста любой метод архивации файлов в zip налету, который бы нормально пошел на cotonti. Буду очень благодарен тебе, если бы ты помог с моей проблемой.
Ratibor
#4 2009-02-20 18:51
Wadik
Как я смогу подсказать не видя твоих скриптов ?
Давай те которые работают под Seditio, я посматрю.
Не задавай глупых вопросов, не услышишь вранья.
Wadik
#5 2009-02-20 19:15
Ratibor, Отправил по ЛС. =) Чесное слово, уже не знаю как изощриться, чтобы решить эту досадную ошибку.
Ratibor
#6 2009-02-20 19:32
Wadik
В общем не стал я разбираться что у тебя за ботва,
в смысле что за скрипт ты используешь для работы с архивом :-)
Вот тебе нормальный класс для работы с zip.
Создал test.php:
<?php
 require_once('pclzip.lib.php');
  $archive = new PclZip('archive.zip');
  $v_list = $archive->add('readme.txt');
?>
Пробовал архивировать файл readme.txt и с кодировкой 1251 и с utf-8,
архивирует нормально.


В твоем случае примерно получится так:
$files1 = '1802175636_826.txt';
$files2 = '1802161930_884.gif';
$files3 = '1802161930_20.gif';

require_once('pclzip.lib.php');
$archive = new PclZip('archive.zip');
$v_list = $archive->add($files1);
$v_list = $archive->add($files2);
$v_list = $archive->add($files3);

В общем используй pclzip.lib.php вместо своего archive.php
Вот описание на русском по работе с этим классом.

Если скажем тебе надо не файлы, а текст из базы брать, потом писать в текстовый файл, а этот файл архивировать в зип, то в phpmyadmin есть файлик zip.lib.php
Берешь его оттуда и вот примерно аким способом юзаешь:

<?php
include 'zip.lib.php';
$data = 'текст который надо записать в файл и этот файл заархивировать';
$name = 'filename.txt';
$zipfile = new zipfile();
$zipfile->addFile($data, $name);
$zipdata = $zipfile->file();
$fp = fopen ('filename.zip', 'w+');
fwrite($fp, $zipdata);
fclose($fp);
?>
Не задавай глупых вопросов, не услышишь вранья.
This post was edited by Ratibor (2009-02-20 19:57, 15 years ago)
Wadik
#7 2009-02-20 19:52
ха))))) заработало)))))) Спасибо огромное, Ratibor
Ratibor
#8 2009-02-20 19:56
Да не за что :-)
Не задавай глупых вопросов, не услышишь вранья.
Wadik
#9 2009-02-20 20:00
Еще спасибо за очень информационное дополнение))) Кстати, $archive->add() нормально воспринимает массивы, поэтому просто $files.