我需要帮助写一个PHP脚本,通过PHP脚本在新标签页中加载PDF文件。我这么做是为了确保只有已登录并拥有链接的用户才能访问PDF文件,否则父目录下的.htaccess将阻止访问。
以下代码可以读取PDF文件:
$file = '../path-to-file.pdf';
$filename = 'filename.pdf';
header('Content-type: application/pdf');
header('Content-Disposition: inline; filename="' . $filename . '"');
header('Content-Transfer-Encoding: binary');
header('Accept-Ranges: bytes');
@readfile($file);
这样做的结果被传递到下面展示的一个AJAX函数中,该函数生成一个新的选项卡并将响应放在其中:
$.ajax({
url: '../includes/function.projects.php?view-media=' + item,
success: function(data) {
$(window.open().document.body).html(data);
}
})
这一切都很顺利,只有在打开新标签时会出现问题,因为我直接将响应写入文档的HTML中,所以会得到一屏幕像这样的文本:
%PDF-1.5 %���� 2 0 obj << /Linearized 1 /L 17007 /H [ 687 126 ] /O 6 /E 16732 /N 1 /T 16731 >>
所以我的问题很简单; 有人之前试过做到这一点吗?如果是这样,我应该使用哪些库/缺少哪些头文件等等
我已经在这里看到了这个问题,但我无法让人们列出的答案起作用,所以我已经没有想法了。
任何帮助将不胜感激,提前致谢!
window.open.document.body
这样简单地传递数据,因为你没有带任何头信息。为什么不直接弹出一个窗口,将你的function.projects.php?view-media=' + item
作为 URL,并在顶部进行安全检查呢? - dmgig