【问题标题】:PDF file from mysql download page using php使用php从mysql下载页面获取PDF文件
【发布时间】:2015-12-26 16:05:57
【问题描述】:

我做了一个支持pdf文件下载的php页面。从mysql服务器带来的每个pdf文件。 但是,我遇到了一个问题,我下载的 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;
?>

【问题讨论】:

  • Original_File 列存储文件在您的服务器上的位置?
  • @Musa 是 Original_File 是存储文件的列

标签: php mysql pdf download


【解决方案1】:

问题在于以下行:

$filedata = mysql_result($results, 1);

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

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

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

一些额外的建议:

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

【讨论】:

  • 我使用用户答案更改了我的代码,但我遇到了同样的问题..因此我尝试在你的建议中使用 mysql 或 pro....我该如何使用它们...?
  • 这里有很多关于如何从 mysql 迁移到 mysqli 或 pdo 的主题。关于您遇到的意外行为:您需要在代码中添加适当的错误处理并通过打印出变量的值来调试代码。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多