2010-04-09 55 views
1

我想要一个php页面来“显示”pdf。这里是代码:Firefox未能检测到由PHP设置的内容类型

<?php 
    header("Content-type: application/pdf"); 
    readfile('Reportage - Berlin.pdf'); //tried echo(readfile(...)) as well 
?> 

不是很复杂我想,但不知何故firefox无法检测到这是一个pdf。这适用于Safari,但在Firefox中,我得到一个提示下载文件,所以我得到一个pdftest.php文件。我知道即时获取我的文件,因为如果我将扩展名重命名为pdf,我可以打开它。

这看起来太简单了!我错过了什么?

回答

5

如果您希望使用Adobe Reader在浏览器中打开它,那么也可以依赖于浏览器设置。之所以说文件名是pdftest.php是因为你没有告诉浏览器文件名是什么。

如果要强制浏览器下载它,补充一点:

header('Content-Disposition: attachment; filename="downloaded.pdf"');

+1

+1或者将'pdftest.php'后的文件名作为尾部路径部分。 (这可能是非ASCII文件名所必需的。) – bobince 2010-04-09 23:11:20

+0

@Htbaa:如果我不想强制下载,该怎么办?增加这个强制Safari浏览器下载文件,而不是在浏览器窗口中“预览”它。我想一个更大的问题:这个浏览器预览是更多的Safari浏览器功能?有没有办法在ff中模拟这种行为?然而,这绝对回答了我如何使ff看到类型的问题。 – Ying 2010-04-09 23:24:55

+0

@bobince:正是我需要的!你是男人(或女人)! – Ying 2010-04-09 23:26:49

4

Htbaa是看错你应该添加什么线,但由于英询问浏览器下载文件,正确的路线是:

header('Content-Disposition: inline; filename="downloaded.pdf"'); 

顺便说一句,你不想echo(readfile(...)),因为它会增加一个int代表读取的文件大小(php.net/readfile

+1

当然,作为一个头文件* *有*要放在*之前*开始打印文件的内容 – 1ace 2010-04-09 23:23:14

相关问题