由php管理的PDF下载不起作用

由php管理的PDF下载不起作用,php,pdf,download,Php,Pdf,Download,我有以下功能: 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(str

我有以下功能:

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 reader,我想知道“另存为”是否会强制相同的行为导致错误


任何帮助都将不胜感激

好的,它似乎被隔离到:

headerContent处置:附件


这会强制浏览器下载到内容,而不使用浏览器插件,这会导致某些用户设置上的权限问题。

在HTTP错误404中找不到文件-找不到文件或找不到文件PHP脚本生成的消息?可能与此无关,但$fileID=int$\u请求[f]&mysql\u num\u rows$result>=1&readfile$file;另外,file_GetPath函数使用请求中的参数id,该函数是否返回文件的正确路径如果是,为什么要查询dbapologies,未找到的文件是由adobe生成的。因此,用户成功下载了该文件,然后该文件就不可用了。