我的服务器上有一个PHP脚本,用于创建和下载PDF文件。我已经在我的Ubuntu台式计算机上的Chromium客户端上测试了它,它下载并打开正常。
当我尝试使用Windows 7和Windows 8 Chrome浏览器时,文件会下载,但系统无法打开该文件。错误读取,
“它不是受支持的类型,或者已经损坏......”。
以下是提示下载的PHP代码:
<?php
...
ob_start();
include 'show_report.php';
$content = ob_get_clean();
$tmpfname = tempnam("/var/www/phpAJAX/Reports/", "pdf_");
$handle = fopen($tmpfname, "w");
fwrite($handle, $content);
fclose($handle);
shell_exec('mv '.$tmpfname.' '.$tmpfname.'.html');
$output = shell_exec('wkhtmltopdf --page-size Letter '.$tmpfname.'.html '.$tmpfname.'.pdf');
//echo $content;
header("Content-disposition: attachment; filename=".$_GET['report_name'].".pdf");
header("Content-type: application/pdf");
readfile($tmpfname.'.pdf');
?>
只是想知道是否有人能够理解为什么会发生这种情况。
谢谢!
答案 0 :(得分:0)
我找到了解决问题的解决方案的链接:
如果您将标题更改为以下PHP代码,则PDF文件已正确下载并在Windows和ubuntu上正确打开。
header('Content-Description: File Transfer');
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename="FILENAME"');
header('Content-Transfer-Encoding: binary');
header('Expires: 0');
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header('Pragma: public');
header('Content-Length: ' . filesize("PATH/TO/FILE"));
ob_clean();
flush();
readfile(PATH/TO/FILE);
exit();