我发现这段代码允许我打开一个窗口并允许用户下载文件(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;
它很适合允许用户通过弹出窗口从服务器下载文件,但我有两个问题:
在执行这段代码之前,我在屏幕(浏览器)上打印了一些文本。但是,当最后使用此块执行.php文件时,屏幕上不会打印任何内容,而是直接进入下载。如何确保在浏览器上打印内容然后允许下载文件?
然后,我想也许我会在打印完成后插入一个链接,但是我无法让它工作。当我点击要下载的链接(href ='download.php')时,会返回一个空白屏幕,而不是其他内容。
有人可以帮忙吗? TIA!
答案 0 :(得分:1)
您回复的任何内容都将成为您下载的一部分。您需要两个单独的页面...一个用于显示文本,另一个用于文件。
答案 1 :(得分:1)
您无法从浏览器的单页请求中为浏览器和返回HTML文件。它期待一个或另一个。您可以打开一个带有文本的弹出窗口,然后将Javascript重定向到发送该文件的第二个PHP脚本。
答案 2 :(得分:1)
每个页面都可以用单向,html / pdf / image / download文件等进行解析...
解决方案:执行您希望用户在HTML中看到的内容(链接/文本),当他们按下下载链接时,您可以在隐藏的iframe中打开它。
现在,不要来抱怨这不是解决这个问题的方法,我们在2011年等等 这是解决这个问题的唯一方法(除了使用Java或Flash)(可能html5会有一个很好的解决方案,但是大多数用户浏览器都不支持这个)。