архив — МиниКод http://minicode.ru записи кодов Wed, 05 Sep 2018 06:40:48 +0000 ru-RU hourly 1 https://wordpress.org/?v=4.8.14 создание ZIP архива на лету и отдача на скачивание bitrix http://minicode.ru/sozdanie-zip-arxiva-ne-letu-i-otdacha-na-skachivanie-bitrix/ Wed, 08 Apr 2015 07:25:59 +0000 http://minicode.ru/?p=778
<?
require($_SERVER["DOCUMENT_ROOT"]."/bitrix/header.php");
// require($_SERVER["DOCUMENT_ROOT"]."/download/createzip.php");
$arrFile = array(
					"/upload/item.jpg", 
					"/upload/item2.jpg", 
					"/upload/slide.jpg",
					"/upload/products/doc/CWSO.pdf",
					"/upload/products/doc/CWSS-C-W.pdf",
					"/upload/products/doc/CWSS-O.pdf",
					"/upload/products/doc/CWST.pdf",
					"/upload/products/doc/DBS1224B4W_manual.pdf",
					"/upload/products/doc/EMA_DBS_Certificate.pdf",
					"/upload/products/doc/EnScape_Certificate.pdf",
					"/upload/products/doc/ExitPoint_Certificate.pdf",
					"/upload/products/doc/ExitPoint_manual.pdf",
					);

createZipAndDownload($arrFile);

function createZipAndDownload($arFiles)
{
	$zip = new ZipArchive();
	$filename = "system_sensor_archive_".date("d.m.Y").".zip";
	var_dump($filename);
	if ($zip->open($filename, ZipArchive::CREATE)!==TRUE) {
	    exit("Невозможно открыть <$filename>\n");
	}

	foreach ($arFiles as $file) 
	{		
	 	$arr = explode("/", $file);	 	
	 	var_dump($arr);
		$zip->addFile($_SERVER["DOCUMENT_ROOT"].$file, end($arr));
	}
	
	$zip->close();

	file_force_download($filename);
}

function file_force_download($file) {
  if (file_exists($file)) {
    // сбрасываем буфер вывода PHP, чтобы избежать переполнения памяти выделенной под скрипт
    // если этого не сделать файл будет читаться в память полностью!
    if (ob_get_level()) {
      ob_end_clean();
    }
    // заставляем браузер показать окно сохранения файла
    header('Content-Description: File Transfer');
    header('Content-Type: application/octet-stream');
    header('Content-Disposition: attachment; filename=' . basename($file));
    header('Content-Transfer-Encoding: binary');
    header('Expires: 0');
    header('Cache-Control: must-revalidate');
    header('Pragma: public');
    header('Content-Length: ' . filesize($file));
    // читаем файл и отправляем его пользователю
    readfile($file);

    unlink($file);
    exit;
  }
}

Оригинал тут http://pastebin.com/h8zubtLz

]]>