首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在PHP中生成下载文件链接

在PHP中生成下载文件链接
EN

Stack Overflow用户
提问于 2009-12-28 13:30:21
回答 3查看 102.6K关注 0票数 15

可能重复:

open download dialog with php

我的页面上有一个链接,上面写着:<a href='test.pdf'>(Test.pdf)</a>。当我单击该链接时,应会打开下载对话框以下载该文件。有没有人能帮我用PHP实现这一点?

谢谢

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2009-12-28 13:35:52

代码语言:javascript
复制
$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:

代码语言:javascript
复制
<a href="download.php">Test.pdf</a>

这应该就行了。

票数 40
EN

Stack Overflow用户

发布于 2009-12-28 13:34:30

代码语言:javascript
复制
<a href="test.pdf">test.pdf</a>
票数 15
EN

Stack Overflow用户

发布于 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文件中的任何指令也会影响它下面的所有子目录。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1968106

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档