您的代码中需要考虑一些事项。
首先,正确编写这些标题。您将永远不会看到任何服务器正在发送Content-type:application/pdf
,标题是Content-Type: application/pdf
,以大写的首字母等隔开。
其中Content-Disposition
的文件名仅是文件名,而不是文件的完整路径,尽管我不知道它是否是强制性的,但该名称用"
not包装'
。另外,您的最后一个'
丢失了。
Content-Disposition: inline
表示该文件应显示而不是下载。使用attachment
代替。
另外,将文件扩展名大写以使其与某些移动设备兼容。(更新:可以肯定只有黑莓出现了这个问题,但是世界已经从那开始发展了,所以这不再是一个问题)
话虽如此,您的代码应该看起来像这样:
<?php
$filename = './pdf/jobs/pdffile.pdf';
$fileinfo = pathinfo($filename);
$sendname = $fileinfo['filename'] . '.' . strtoupper($fileinfo['extension']);
header('Content-Type: application/pdf');
header("Content-Disposition: attachment; filename=\"$sendname\"");
header('Content-Length: ' . filesize($filename));
readfile($filename);
Content-Length
是可选的,但对于希望用户能够跟踪下载进度并检测下载是否中断的情况也很重要。但是使用它时,必须确保不会随文件数据一起发送任何内容。确保之前<?php
或之后绝对没有任何内容?>
,甚至没有空行。
'
$filename='./pdf/jobs/pdffile.pdf';
在该行中添加和,header("Content-Disposition:inline;filename='$filename");
不要使用引号。