Подскажите как на php сделать download файла.
например, чтобы вызывать
download.php?<параметр отвечающи за то, что хотим скачать>
и после выполнения download.php, открывалось окно с предложением
сохранения файла.
или киньте ссылку где это описано.
Спасибо, Дмитрий
Prisoner
02-11-2003, 22:04
Вот что-то (http://www.hotdoc.ru/?P=3&D=26) валяется.
Ну вот вроде получилось, протестировал в 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, вот и всё.
Всем огромное спасибо.
Prisoner
11-11-2003, 01:34
Mitiai, на будущее просьба выводить какой-либо код в теге code. В противном случае некоторые элементы вашего кода могут быть отображены некорректно.
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.