PHP - 如何提供阅读pdf的路径?

时间:2016-05-11 03:19:44

标签: javascript php

选择文件名并重定向..

的index.php

<?php
$book_name = ["Jenkins_Essentials","Asterisk","phalcon"];
echo "<select><option selected>Book Name</option>";
foreach ($book_name as $key => $value) {
    echo "<option name='$key'>$value</option>";
}
echo "</select>";
?>
<script type="text/javascript">
$(document).ready(function(){
    $("select").on("change",function(){
        location.href = "reading.php?title="+$(this).val();            

    });
});
</script>

reading.php

$title = $_GET["title"];
header("Content-type: application/pdf");
header('Content-Disposition: inline; filename="$title.pdf"');
@readfile('D:\Learning\$title.pdf');//this is my issue

当我重定向时显示Failed to load PDF document .. 我正在运行的脚本文件位置C:\xampp\htdocs但是pdf文件位置如上面的D:驱动器所示!如何提供它的路径?

2 个答案:

答案 0 :(得分:0)

文件名'D:\Learning\$title.pdf'字面$title.pdf是否带有美元($)符号。

PHP变量插值适用于"双引号,这意味着您的变量实际上是一个字符串,并且不被php识别为变量。

您很可能希望将其更改为

 readfile("D:\Learning\$title.pdf");

OR(我个人会因为反斜杠逃避而避免这种情况)但是值得注意的是windows会接受正斜杠(Unix风格)

readfile('D:\Learning\\'.$title.'.pdf');
readfile('D:/Learning/'.$title.'.pdf'); //this works fine on windows and avoids escaping the \

或者我更喜欢。

 readfile("D:\Learning\{$title.pdf}");

否则它正在寻找一个名为$title.pdf的文件

答案 1 :(得分:0)

在最后两行中,PHP不包含$ title变量,因为您使用的是单引号,而您正在使用反斜杠。尝试其中之一:

header('Content-Disposition: inline; filename="'.$title.'.pdf"');
@readfile('D:/Learning/'.$title.'.pdf');

或:

readfile("D:/Learning/$title.pdf");

反斜杠用于转义字符,因此请尽可能使用正斜杠。在Windows上,您可以在文件路径中使用它们。另外,要输出文件,请尝试使用此代替@readfile:

$pdf = file_get_contents('D:/Learning/'.$title.'.pdf');
echo $pdf;

另一个注意事项 - 您应该在访问文件之前检查该文件是否存在。放在脚本的顶部:

if(!file_exists('D:/Learning/'.$title.'.pdf')) {
    echo "File doesn't exist.";
    exit();
}

希望这会有所帮助。祝你一切顺利。