【发布时间】:2018-02-10 16:40:25
【问题描述】:
我遇到了这个我一辈子都无法解决的问题。
我有一个简单的php脚本可以重定向到pdf,代码如下:
$file = "url/to/file";
header("Pragma: public");
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Cache-Control: private", false);
header("Content-Description: File Transfer");
header('Content-type: application/pdf');
header('Content-Disposition: inline; filename="somefile.pdf"');
header('Content-Transfer-Encoding: binary');
readfile($file);
exit();
如果我直接在浏览器选项卡中尝试,它可以工作,它会连接 Chrome 的 pdf 插件并向我显示。如果我尝试将其放在另一个页面上的链接上,或者尝试通过 javascript 中的 window.open 打开它,它会显示一个空白页面。这只发生在 Chrome 和 Safari 中,Firefox 和 Edge 显示它很好。在有人问之前,我已经尝试过使用和不使用缓存和内容描述标头,这是我从我在这里找到的答案中得到的,这只是我拥有的最后一个版本。
有什么想法吗?
提前致谢
编辑
我忘了提到即使我重新加载页面,问题仍然存在于空白选项卡上。我检查了 devtools 上的“网络”选项卡,它们显示机器人请求和响应(重定向和直接)的相同结果,但重定向不起作用。此外,任何一个都没有任何错误。
另外,我在没有 exit() 的情况下尝试过,没有任何改变。
【问题讨论】:
-
您还需要做些什么吗?您正在将文件读入内存然后退出代码。
-
@jeff php
readfile读取和输出:php.net/manual/en/function.readfile.phpReads a file and writes it to the output buffer -
@KarlReid 好吧,你去 - 每天学习新东西 :-) (在张开大嘴之前请注意自检手册)。
-
您能否检查一下开发工具,看看是否有任何错误,或者“网络”选项卡中的请求/响应是什么样的?
-
@jeff 我也试过没有exit(),没有骰子。
标签: php google-chrome pdf redirect