0
我有以下功能:PDF下載不工作
if (isset($_REQUEST["f"]))
{
//get file details from database
$fileID=$_REQUEST["f"];
$sql = "select * from sds_files where file_id = " .fquery_sanitize($fileID);
$result = fquery_db($sql);
//$file_extension = strtolower(substr(strrchr($filename,"."),1));
if(mysql_num_rows($result) >0)
{
$row = mysql_fetch_assoc($result);
$filename = $row['file_name'];
$file = file_GetPath($fileID);
header ("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header('Content-Type: application/octetstream');
header("Content-Transfer-Encoding: Binary");
header("Content-length: ".filesize($file));
header("Content-disposition: attachment; filename=\"".basename($filename)."\"");
readfile("$file");
}
else
{
echo "File cannot be found";
}
}
else
{
echo "No file selected";
}
此得到一個文件,它可以是任何類型,.xls的,.DOC .dox,.PDF等..
對於大多數PDF文件,此代碼可以正常工作,但在個別情況下,我得到用戶聲稱他們收到「找不到文件」等錯誤。但是,如果我給他們直接鏈接到一個文件,它工作正常。
我不知道問題出在什麼地方,我已經強制使用附件類型來強制保存它,而不是它在瀏覽器中出現,就像在ie6中一樣,如果你使用它,它往往會崩潰adobe插件而不是程序。
編輯:
錯誤之際,一個Adobe Acrobat錯誤的一部分,沒有什麼做的PHP或Apache的錯誤代碼。更多客戶相關。由於用戶的行爲不同,我將顯示代碼。
我已經仔細研究過它,它似乎直接鏈接有一個MIME類型的PDF,這adobe告訴瀏覽器屬於Adobe閱讀器,我想知道是否保存將強制相同的行爲,導致錯誤。
任何幫助,將不勝感激!
「HTTP Error 404 - File Not Found」或由PHP腳本生成的「File can not be found」消息中的「找不到文件」? – 2011-06-08 08:41:23
可能無關,而是$ fileID =(int)$ _REQUEST [「f」]'&'mysql_num_rows($ result)> = 1''''''file'($ file);' – 2011-06-08 08:46:04
另外file_GetPath函數使用了pa rameter id是否來自請求,該函數是否返回文件的正確路徑(如果有的話)爲什麼要查詢db – 2011-06-08 08:52:19