我想使PDF可下載,不能通過url直接訪問。PHP:readfile()使用&時出現錯誤下載(&符號)
這是鏈接會是什麼樣子
<a href="getFile.php?file=myfile.pdf" >Myfile</a>
,這是getFile.php
<?php
$file=$_GET['file'];
// Check if file really exists:
$files = array_diff(scandir('/www/secretPlace/'), array('.', '..'));
$show = (in_array($file,$files)) ? true : false;
if(!$show) exit();
header('Content-Type: application/pdf');
header('Content-Disposition: attachment; filename="' . $file . '"');
readfile('/www/secretPlace/' . $file);
這工作得很好,只要PDF名稱不包括&
符號。 如果我嘗試
<a href="getFile.php?file=myfile & other stuff.pdf" >My Special File</a>
我將能夠下載與名稱的文件,但我不能用pdf閱讀器打開它。所有程序都告訴我該文件已損壞。我如何獲得帶有名稱中帶有&
符號的readfile的pdf文件?
從來沒有過的用戶輸入的功能說明;如果你這樣做,用戶可以從你的服務器下載任何文件; – itzmukeshy7
@ itzmukeshy7我添加了一個檢查,如果該文件實際上在目錄中。你認爲現在保存嗎?否則,我正在考慮使用http://stackoverflow.com/a/4205278/2311074。 – Adam
不需要添加'foreach'循環,只需使用'in_array()'來檢查; – itzmukeshy7