可能重复:
我的页面上有一个链接,上面写着:<a href='test.pdf'>(Test.pdf)</a>
。当我单击该链接时,应会打开下载对话框以下载该文件。有没有人能帮我用PHP实现这一点?
谢谢
发布于 2009-12-28 13:35:52
$filename = 'Test.pdf'; // of course find the exact filename....
header('Pragma: public');
header('Expires: 0');
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header('Cache-Control: private', false); // required for certain browsers
header('Content-Type: application/pdf');
header('Content-Disposition: attachment; filename="'. basename($filename) . '";');
header('Content-Transfer-Encoding: binary');
header('Content-Length: ' . filesize($filename));
readfile($filename);
exit;
将上面的文件命名为download.php
HTML:
<a href="download.php">Test.pdf</a>
这应该就行了。
发布于 2009-12-28 13:34:30
<a href="test.pdf">test.pdf</a>
发布于 2009-12-28 14:33:03
对于PDF文件,默认情况下,大多数浏览器都会查找帮助程序(acrobat)将其加载到浏览器中。我猜你是想绕过这个默认行为。
要做到这一点,最简单的方法(假设你在apache的*nix机器上)是在你想要得到以下结果的目录中创建一个.htaccess文件,并添加下面这行:
AddType应用程序/八位位流.pdf
这将导致默认情况下下载任何扩展名为.pdf的文件。您甚至可以让页面上的一些.pdf文件在浏览器中加载,而其他文件则使用FilesMatch指令( http://www.askapache.com/htaccess/using-filesmatch-and-files-in-htaccess.html )下载。
我知道您最初的问题是“如何使用PHP实现”,但我想我还是把它写出来,以防您正在寻找一个更简单、更优雅的解决方案。一定要记住,您放在.htaccess文件中的任何指令也会影响它下面的所有子目录。
https://stackoverflow.com/questions/1968106
复制相似问题