Perl / CGI: перенаправление на другую страницу после загрузки файла - PullRequest
2 голосов
/ 13 мая 2011

это довольно новый вопрос, и я некоторое время искал по этой теме, но ничего, что я нашел, похоже, не работает, как описано.У меня есть этот кусок кода для обеспечения загрузки файла пользователю, который отлично работает:

open(DOC, "<$file_name") or die "$!";
@textFile = <DOC>;  
close DOC;

print "Content-Type:application/x-download\n";  
print "Content-Disposition:attachment;filename=" . $basename . "\n\n";   
print @textFile;

Моя проблема в том, что после начала загрузки файла я бы хотел перенаправить пользователя кдругая страница.Приведенный выше скрипт фактически передается из формы другим скриптом, где у меня есть:

<form action="/cgi-bin/download.pl">   
    <p> some msg </p>  
    <p><input type="submit" value="Download" name="Download"></p>            
    </form>

Я пытался поместить некоторые операторы javascript в тег ввода, например:

onclick="javascript:window.document.location.href=\'http://www.mynewpage.com'

а также печать в конце (из download.pl) что-то вроде:

print "Location: http://www.mynewpage.com";

Это не работает.

Если кто-то может дать мне подсказку, я бы очень признателенчто!

Заранее спасибо!

Алекс

Ответы [ 2 ]

1 голос
/ 13 мая 2011

Вы не можете сделать это с помощью HTTP (см. Resposne ADW).

Что делает большинство сайтов, это перенаправляет вас на страницу, на которой есть некоторый JavaScript, который затем запускает загрузку.Он также предоставляет ссылку в случае, если она не работает.

Например: http://sourceforge.net/projects/sevenzip/files/7-Zip/9.22/7z922.exe/download

См. Этот вопрос SO о javascript: начало загрузки файла с помощью JavaScript

0 голосов
/ 13 мая 2011

Вы не можете сделать это, используя прямой http / html.

Ответом на запрос является файл, вам также не разрешено отправлять дополнительный ответ (например, перенаправление).

Как говорит Дейв, обычно это делается с помощью JavaScript.

...