Перейти к содержимому


Доп. действие - выгрузка по отмеченным записям прикрепленных к полю файлов в один архив


Сообщений в теме: 4

#1 Radik

    Активный участник

  • Пользователи
  • PipPipPip
  • 117 сообщений

Отправлено 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 Radik

    Активный участник

  • Пользователи
  • PipPipPip
  • 117 сообщений

Отправлено 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 Radik

    Активный участник

  • Пользователи
  • PipPipPip
  • 117 сообщений

Отправлено 14 Ноябрь 2013 - 12:26

Спасибо большое, работает!





Количество пользователей, читающих эту тему: 1

0 пользователей, 1 гостей, 0 анонимных