2016-05-11 68 views
1

選擇文件名和重定向..PHP - 如何給PDF閱讀路徑?

的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

沒有php有權訪問該目錄? –

+0

在調試階段,千萬不要用'@'來壓制警告。去掉它。 – Raptor

回答

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(); 
} 

希望這有助於您。祝你好運。

+0

不好,我已經在幾分鐘前做過這個答案。 – ArtisticPhoenix

+1

@ArtisiticPhoenix你的答案有缺陷,並沒有完全解決問題。 –

+0

三個示例之一的一部分存在缺陷,並且錯誤的原因我是正確的 - 只是說。在對代碼樣式或方法的所有改進之外,實際上找出問題所在。 – ArtisticPhoenix

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字面上

+0

它仍然不起作用 –

+0

你的第二個例子是錯誤的,因爲你沒有在文件擴展名中加引號。 –

+0

@WilliamCasey - 這是真的,但\反斜槓正在逃避'在這個例子中的單引號〜乾杯 – ArtisticPhoenix