PHP:发布下载文件的链接

时间:2011-07-06 00:24:29

标签: php hyperlink download

我发现这段代码允许我打开一个窗口并允许用户下载文件(download.php)

header('Content-Description: File Transfer');
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename=' . basename($file));
header('Content-Transfer-Encoding: binary');
header('Expires: 0');
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header('Pragma: public');
header('Content-Length: ' . filesize($file));
ob_clean();
flush();
readfile($file);
exit;

它很适合允许用户通过弹出窗口从服务器下载文件,但我有两个问题:

  1. 在执行这段代码之前,我在屏幕(浏览器)上打印了一些文本。但是,当最后使用此块执行.php文件时,屏幕上不会打印任何内容,而是直接进入下载。如何确保在浏览器上打印内容然后允许下载文件?

  2. 然后,我想也许我会在打印完成后插入一个链接,但是我无法让它工作。当我点击要下载的链接(href ='download.php')时,会返回一个空白屏幕,而不是其他内容。

  3. 有人可以帮忙吗? TIA!

3 个答案:

答案 0 :(得分:1)

您回复的任何内容都将成为您下载的一部分。您需要两个单独的页面...一个用于显示文本,另一个用于文件。

答案 1 :(得分:1)

您无法从浏览器的单页请求中为浏览器返回HTML文件。它期待一个或另一个。您可以打开一个带有文本的弹出窗口,然后将Javascript重定向到发送该文件的第二个PHP脚本。

答案 2 :(得分:1)

每个页面都可以用单向,html / pdf / image / download文件等进行解析...
解决方案:执行您希望用户在HTML中看到的内容(链接/文本),当他们按下下载链接时,您可以在隐藏的iframe中打开它。

现在,不要来抱怨这不是解决这个问题的方法,我们在2011年等等 这是解决这个问题的唯一方法(除了使用Java或Flash)(可能html5会有一个很好的解决方案,但是大多数用户浏览器都不支持这个)。