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

Нужна помощь

Wadik
#1 20. Februar 2009, 17:37
Доделываю проект на базе Cotonti и возникла досадная проблема. Есть txt файлы(кодировка WINDOWS-1251) и пару jpeg, которые на лету архивируются в zip файл. На седе все библиотеки по архивации работают нормально, а на cotonti совсем не хотят работать. Архив пользователю отдается, однако битый и без txt файлов внутри(jpeg файлы присутствуют).
Помогите пожалуйста! Очень не охото откатывать на seditio =(
Ratibor
#2 20. Februar 2009, 18:19
# Wadik : Доделываю проект на базе Cotonti и возникла досадная проблема. Есть txt файлы(кодировка WINDOWS-1251)
WINDOWS-1251 - это кодировка текста или имена файлов на русском ?
Если первое, то это никак не должно влиять, если конечно юзаешь нормальные скрипты для архивации.
Не задавай глупых вопросов, не услышишь вранья.

Dieser Beitrag wurde von Ratibor (am 20. Februar 2009, 18:49, vor 15 Jahre) bearbeitet
Wadik
#3 20. Februar 2009, 18:25
Ratibor, у меня текст в 1251. А в названиях фалов только цифры. Пробовал и pear подключать и классы с phpclasses. Подскажи пожалуйста любой метод архивации файлов в zip налету, который бы нормально пошел на cotonti. Буду очень благодарен тебе, если бы ты помог с моей проблемой.
Ratibor
#4 20. Februar 2009, 18:51
Wadik
Как я смогу подсказать не видя твоих скриптов ?
Давай те которые работают под Seditio, я посматрю.
Не задавай глупых вопросов, не услышишь вранья.
Wadik
#5 20. Februar 2009, 19:15
Ratibor, Отправил по ЛС. =) Чесное слово, уже не знаю как изощриться, чтобы решить эту досадную ошибку.
Ratibor
#6 20. Februar 2009, 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);
?>
Не задавай глупых вопросов, не услышишь вранья.

Dieser Beitrag wurde von Ratibor (am 20. Februar 2009, 19:57, vor 15 Jahre) bearbeitet
Wadik
#7 20. Februar 2009, 19:52
ха))))) заработало)))))) Спасибо огромное, Ratibor
Ratibor
#8 20. Februar 2009, 19:56
Да не за что :-)
Не задавай глупых вопросов, не услышишь вранья.
Wadik
#9 20. Februar 2009, 20:00
Еще спасибо за очень информационное дополнение))) Кстати, $archive->add() нормально воспринимает массивы, поэтому просто $files.