PHP:强制下载后显示内容?

时间:2010-07-20 11:02:59

标签: php header

我有一个像这样的剧本

<?php

if (file_exists("./foo.txt")) {

    header("Content-type: application/force-download");
    header("Content-length: ".filesize("./foo.txt"));
    header('Content-Disposition: attachment; filename="foo.txt"');
    readfile('./foo.txt');
}

print "HEY!";

?>

我希望在强制下载后将“嘿”写入页面,这怎么可能?

我看到的下载页面就像“如果你的下载没有自动启动点击这里”,那么它的内容和下载是什么?我的示例中的hey包含在文本文件中,因此无效。

5 个答案:

答案 0 :(得分:3)

这只能通过multipart message实现。但不幸的是,在HTTP中支持多部分消息的浏览器并不多(我认为Opera是唯一的)。

这就是为什么通常的做法是使用元刷新重定向发送下载页面以同时包含文本消息和下载操作(尽管它的顺序相反)。

答案 1 :(得分:3)

您可以使用META REFRESH这样做:

<meta http-equiv=REFRESH CONTENT="5; url=http://your_domain/your_file">

答案 2 :(得分:1)

这种方式不可能。 (至少只要我们没有多部分请求。)

您提到的页面会重定向到“如果您的下载无法启动....”页面,并从那里触发下载,通常使用JavaScript在新窗口中打开下载。

答案 3 :(得分:1)

在另一页上显示消息..然后提供下载文件的链接或将浏览器重定向到强制下载的php文件..

答案 4 :(得分:0)

onClick="setTimeout(location.reload.bind(location), 15000);"

这将等待15秒(15,000毫秒),然后调用location.reload函数,这是一个刷新页面的内置函数。