选择文件名并重定向..
的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:
驱动器所示!如何提供它的路径?
答案 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();
}
希望这会有所帮助。祝你一切顺利。