Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > redirect после readfile


Автор: studentigor 21.11.2011, 13:35
Всем привет.
Вот столкнулся с таким делом.
нужно отдать файл на скачивание, вот так
Код

function down($filename){
header ("Content-Type: application/octet-stream");
    header ("Accept-Ranges: bytes");
    header ("Content-Length: ". filesize ($filename));
    header ("Content-Disposition: attachment; filename=".$filename);
    readfile ($filename);
}


и после этого сделать редирект. но у меня не получается. пробую джаваскриптом, но если делаю раньше - не скачивает.
а после  readfile вообще ничего не делает.

подскажите как сделать?


Автор: bars80080 21.11.2011, 14:09
а какой может быть редирект для скачиваемого файла?
может вам надо перезагрузить страницу, на которой была нажата ссылка скачивания файла?

Автор: studentigor 21.11.2011, 14:31
мне нужно сделать редирект после того как файл скачан.
попробовал сделать так.
сделал редирект на файл download.php
Код

<?php
session_start();
    $filename = $_SESSION['filename'];
    header ("Content-Type: application/octet-stream");
    header ("Accept-Ranges: bytes");
    header ("Content-Length: ". filesize ($filename));
    header ("Content-Disposition: attachment; filename=".$filename);
    readfile ($filename);    

?>
<html>
<body>
<iframe width="1" height="1" src="download.php" onLoad="alert('asd');"></iframe>
</body>
</html>

и при загрузке фрейма сделать редирект. но почему-то не срабатывает.
Файл загружается, но не алерт не редирект не происходит.
да и когда выскакивает окошко, которое предлагает открыть или сохранить, url не меняется на download.php

Автор: -=Ustas=- 21.11.2011, 14:56
studentigor, 
Цитата(studentigor @  21.11.2011,  14:31 Найти цитируемый пост)
и при загрузке фрейма сделать редирект. но почему-то не срабатывает.

Потому что у тебя Content-Type соотвествующий.
Так как ты хочешь - не получиться сделать.

Автор: studentigor 21.11.2011, 15:28
-=Ustas=- я сделал. я разделил html и php.
делаю редирект на download.html где лежит 
Код

<html>
<body>
<iframe width="1" height="1" src="download.php" onLoad="window.location='...'"></iframe>
</body>
</html>

и отдельно download.php
Код

<?php
session_start();
    $filename = $_SESSION['filename'];
    header ("Content-Type: application/octet-stream");
    header ("Accept-Ranges: bytes");
    header ("Content-Length: ". filesize ($filename));
    header ("Content-Disposition: attachment; filename=".$filename);
    readfile ($filename);    
?>

и сработало.

всем спасибо

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)