我制作了支持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;
?>
答案 0 :(得分:0)
问题在于以下几行:
$filedata = mysql_result($results, 1);
此代码尝试从结果集的第二条记录中获取第一个字段。您正在根据ID查找记录,您的结果集中不会有第二条记录。将您的代码更改为:
$filedata = mysql_result($results, 0, 1);
从结果集的第一条记录中获取第二个字段。
一些额外的建议: