Какой код в доп действиях сделает при отметке нескольких записей выгрузку всех вложенных к ним в определенное поле файлы в архив для дальнейшего сохранения на локальном диске пользователя?


Доп. действие - выгрузка по отмеченным записям прикрепленных к полю файлов в один архив
Автор Radik, 18 сент. 2013 12:35
Сообщений в теме: 4
#1
Отправлено 18 Сентябрь 2013 - 12:35
#2 Гость_Roman_*
Отправлено 18 Сентябрь 2013 - 14:16
Должно быть примерно так:
$zip = new ZipArchive; $zip_name = "temp/".microtime(true).".zip"; if ($zip->open($zip_name, ZipArchive::CREATE) !== true) die("Невозможно создать архив!"); foreach ($_POST['sel'] AS $one_line) { // Выбираем поле 333 (файл) из таблицы 111 $result = data_select_field(111, "`f333`", "`id`=",$one_line); if ($row = sql_fetch_assoc($result)) { $files = explode("\r\n", $row['f333']); foreach ($files AS $one_file) $zip->addFile(get_file_path(333, $one_line, $one_file), $one_file); } } $zip->close(); header("Content-Length: ".filesize($zip_name)); header("Content-Disposition: attachment; filename=attach.zip"); header("Content-type: application/zip"); $fd = fopen($zip_name, "r"); while ($str = fgets($fd)) echo $str; fclose($fd); unlink($zip_name); exit;
#3
Отправлено 08 Октябрь 2013 - 16:24
Как я понял, русские названия архивируются не в windows кодировке, названия превращаются в иероглифы, как можно сделать сохранение в windows кодировке?
#4 Гость_Roman_*
Отправлено 08 Октябрь 2013 - 16:30
Можно применить функцию iconv в фрагменте кода
foreach ($files AS $one_file) $zip->addFile(get_file_path(333, $one_line, $one_file), iconv("utf-8", "cp1251", $one_file));
#5
Отправлено 14 Ноябрь 2013 - 12:26
Спасибо большое, работает!
Количество пользователей, читающих эту тему: 1
0 пользователей, 1 гостей, 0 анонимных