Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме 15-35 тыс рублей в месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 26.09.2010, 13:01   #1
Rifler
Пользователь
 
Регистрация: 15.12.2007
Сообщений: 44
По умолчанию отдать файл на загрузку без перехода

Всем добрый день
В общем на сайте пользователю позволено загружать файлы.
Файл загружается в какую-то папку на сервере, например /files/rifler/inda.doc. В базе есть запись, где этому файлу соответствует id, например cmXeR53raRwCClJo6AeX.
Как сделать так, чтобы при щелчке на ссылке вида http://www.mysite.ru/file.php?id=cmXeR53raRwCClJo6AeX на любой странице сайта отдавался реальный файл без перезагрузки страницы? Как например на этом форуме сделаны вложения, по ссылке http://programmersforum.ru/attachmen...9&d=1257969027 будет отдан файл и перехода на др страницу не будет. Точнее страница начинает обновляться, но потом останавливается и появляется диалоговое окно браузера с просьбой сохранить файл

Может это делается не обязательно с использованием базы, а как-то по другому.
Подскажите как
Rifler вне форума Ответить с цитированием
Старый 26.09.2010, 13:20   #2
Rifler
Пользователь
 
Регистрация: 15.12.2007
Сообщений: 44
По умолчанию

пардон за новую тему, ответ найден
Код:
<?
//сначала превращаем id=cmXeR53raRwCClJo6AeX в имя файла и получаем например
$filename = "/files/rifler/myinfa.doc";

//после этого

$filepnt = fopen($filename, "r");
$doc_contents = fread($filepnt, filesize($filename));
fclose($filepnt);
if (preg_match("~MSIE|Opera~i",$_SERVER["HTTP_USER_AGENT"])) {
@header("Content-Type: application/octetstream");
@header("Content-Disposition: inline; filename=myinfa.doc");
} else {
@header("Content-Type: application/octet-stream");
@header("Content-Disposition: attachment; filename=myinfa.doc");
}
@header("Content-Length: ".strlen($doc_contents));
print $doc_contents;
?>
Главное чтобы до первого вызова header в коде не было никаких echo или print
Rifler вне форума Ответить с цитированием
Ответ
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Загрузить файл без обновления страницы? denisov JavaScript, Ajax 0 24.05.2010 17:44
Добавит картинку в файл без сохранения в файл Pacan4ik Microsoft Office Excel 3 30.07.2009 13:19
Запустить exe-шник по клику на ссылке,без перехода страницы. Zap PHP 4 26.05.2009 09:30
С помощью рекурсии без операторов цикла и перехода написать процедуру P(N) WhyBeNormal Помощь студентам 1 29.01.2009 01:20
Открыть файл *.doc без установленого Word Pashekka Софт 6 15.09.2007 08:25