使用php从mysql下载页面获取PDF文件

时间:2015-12-26 16:05:58

标签: php mysql pdf download

我制作了支持pdf文件下载的php页面。每个pdf文件都来自mysql服务器。 但是,我遇到了一个问题,我下载了php页面错误文件的文件,我无法打开。但是,它的文件大小等于mysql服务器的原始文件,我可以打开它们。

我该如何解决这个问题?

听到我的PHP代码。

</head>
<?php

session_start();
require_once 'login.php';
$db_server = mysql_connect($db_hostname,$db_username,$db_password);

if(!$db_server) die("Unable to connect to MySQL: ".mysql_error());

mysql_query("set session character_set_connection=utf8;");
mysql_query("set session character_set_results=utf8;");
mysql_query("set session character_set_client=utf8;");

mysql_select_db($db_database)
or die("Unable to select database : " .mysql_error());
$row=0;

$doc_id=$_GET["q"];
$User_ID=$_SESSION["user_id"];
$User_type=$_SESSION["user_type"];

$sql = "Select `title`, `file` From Original_Reports Where `document_id` = '".$doc_id."';";
$results = mysql_query($sql);

$filename = mysql_result($results, 0, 0);
$filedata = mysql_result($results, 0, 1);
$mimetype = 'application/pdf';
$fileSize = filesize($filedata);

header("Pragma: public");
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Cache-Control: public");
header("Content-Description: File Transfer");
header("Content-Type: $mimetype");
$header="Content-Disposition: attachment; filename=".$filename.";";
//$header="Content-Disposition: download; filename=".$filename.";";
header($header);
header("Content-Transfer-Encoding: binary");
header("Content-length: ".$fileSize);
// @readfile($filedata);
echo $filedata;
?>

1 个答案:

答案 0 :(得分:0)

问题在于以下几行:

$filedata = mysql_result($results, 1);

此代码尝试从结果集的第二条记录中获取第一个字段。您正在根据ID查找记录,您的结果集中不会有第二条记录。将您的代码更改为:

$filedata = mysql_result($results, 0, 1);

从结果集的第一条记录中获取第二个字段。

一些额外的建议:

  • mysql模块已弃用,请改用mysqli或pdo
  • 始终检查数据库调用的返回值以处理错误