![]() |
Подскажите как на php сделать download файла.
например, чтобы вызывать download.php?<параметр отвечающи за то, что хотим скачать> и после выполнения download.php, открывалось окно с предложением сохранения файла. или киньте ссылку где это описано. Спасибо, Дмитрий |
Вот что-то валяется.
|
Ну вот вроде получилось, протестировал в IE, Opera, FlashGet
скрипт вызывается так: <URL путь к скрипту>download.php?file=1 т.е. для будущего предусмотрел параметр file, который будет принимать и другие значения, не только "1". <? switch ($file) { case 1: $URL_download = 'Полный путь к файлу'; $file_name='Имя файла, обычное, например prog.zip'; break; default: $URL_download = ''; } if ($URL_download!='') { if (ereg('Opera(/| )([0-9].[0-9]{1,2})', $_SERVER['HTTP_USER_AGENT'], $log_version)) { define('BROWSER_USER_VER', $log_version[2]); define('BROWSER_USER_AGENT', 'OPERA'); } else if (ereg('MSIE ([0-9].[0-9]{1,2})', $_SERVER['HTTP_USER_AGENT'], $log_version)) { define('BROWSER_USER_VER', $log_version[1]); define('BROWSER_USER_AGENT', 'IE'); } else if (ereg('OmniWeb/([0-9].[0-9]{1,2})', $_SERVER['HTTP_USER_AGENT'], $log_version)) { define('BROWSER_USER_VER', $log_version[1]); define('BROWSER_USER_AGENT', 'OMNIWEB'); } else if (ereg('Mozilla/([0-9].[0-9]{1,2})', $_SERVER['HTTP_USER_AGENT'], $log_version)) { define('BROWSER_USER_VER', $log_version[1]); define('BROWSER_USER_AGENT', 'MOZILLA'); } else if (ereg('Konqueror/([0-9].[0-9]{1,2})', $_SERVER['HTTP_USER_AGENT'], $log_version)) { define('BROWSER_USER_VER', $log_version[1]); define('BROWSER_USER_AGENT', 'KONQUEROR'); } else { define('BROWSER_USER_VER', 0); define('BROWSER_USER_AGENT', 'OTHER'); } $mime_type = (BROWSER_USER_AGENT == 'IE' || BROWSER_USER_AGENT == 'OPERA') ? 'application/octetstream' : 'application/octet-stream'; $file_size=filesize($URL_download); header('Pragma: public'); header('Expires: 0'); header('Cache-Control: must-revalidate, post-check=0, pre-check=0'); header('Content-Type: ' . $mime_type); header('Accept-Ranges: bytes'); header("Content-Length: ".$file_size); header('Content-Disposition: inline; filename="'.$URL_download.'"'); header('Content-Disposition: attachment; filename="'.$file_name.'"'); header("Content-Transfer-Encoding: binary"); $fp = fopen($URL_download, 'rb'); $file_buffer = fread($fp, $file_size); fclose ($fp); print $file_buffer; exit(); } else { echo "File not found! Please change 'file' variable value!"; } ?> Для того, чтобы вывести текст, а потом автоматом загружать файл, я сделал следующее: 1. Создал файл info.php (вызывается тоже с параметром file, например <URL путь к скрипту>info.php?file=1 2. Этот файл выводит через обычные "echo" содержимое будущего html-файла. Ссылку на загрузку, если автоматическая не началась, т.к. такое возможно, если JavaScript отключить в браузере. 3. И в последок на OnLoad тела навешиваем функцию, в которой вызываем window.location = 'download.php?file=1, вот и всё. Всем огромное спасибо. |
Mitiai, на будущее просьба выводить какой-либо код в теге code. В противном случае некоторые элементы вашего кода могут быть отображены некорректно.
|
Время: 09:39. |
Время: 09:39.
© OSzone.net 2001-