当只需要pdf时,包含.php文件的PHP文件下载

问题描述:

<?php 

$file = $_GET['name']; 

$path = './curr/'.$file.'.pdf'; // the file made available for download via this PHP file 
$mm_type="application/pdf"; // modify accordingly to the file type of $path, but in most cases no need to do so 

header("Pragma: public"); 
header("Expires: 0"); 
header("Cache-Control: must-revalidate, post-check=0, pre-check=0"); 
header("Cache-Control: public"); 
header("Content-Description: File Transfer"); 
header("Content-Type: " . $mm_type); 
header("Content-Length: " .(string)(filesize($path))); 
header('Content-Disposition: attachment; filename="'.basename($path).'"'); 
header("Content-Transfer-Encoding: binary\n"); 

readfile($path); // outputs the content of the file 

?> 

这是file.php中的一段代码。我指的是使用文件:当只需要pdf时,包含.php文件的PHP文件下载

<a href="file.php?name=First File">File 1</a> 

这样做的目的是,在链接的点击,./curr/First File.pdf应该下载。我确实得到了一个下载,但在检查时,它是嵌入在文件中的pdf的网页。任何人都可以协助

+0

上面的代码包含'file.php'文件中的所有内容? – Sirko 2013-03-08 14:00:29

+0

否。围绕下载有一个菜单系统等。以及登录验证。我应该失去所有,但PHP代码? – Glenn 2013-03-08 14:03:40

+1

@Splatter如果你在页面上有其他的HTML,那将会在downlaod中得到输出。你的'file.php'根本不应该有_ANY_标记。 – 2013-03-08 14:04:08

如果你想刚才的PDF加载,上面的代码将被执行的所有代码。

删除所有周围的菜单,页眉或页脚。确保在调用此链接时,除了来自readfile()的PDF之外,没有HTML或任何其他输出。

+0

谢谢你的帮助。 – Glenn 2013-03-08 14:16:20

尝试改变内容类型:

header("Content-Type: application/force-download"); 
+0

我也一样。 PHP的.php文件没有了。其中这个PHP是是%PDF-1.6% âãÏÓ 557 0 OBJ > endobj 567 0 obj等等 – Glenn 2013-03-08 14:02:44

+2

我讨厌这么多。作为用户,当我点击PDF链接时,我希望它在我的浏览器中打开。当网站迫使我下载可以在浏览器中查看的东西时,我绝对鄙视。我可以下载它,如果我想 - 完全脱离主题,我知道。 – 2013-03-08 14:03:31

+0

我很欣赏这一点。但该网页也有一个部分可以在网站上查看PDF(嵌入为对象,我承认)。这是特别的下载部分。 – Glenn 2013-03-08 14:07:32