-4

可能重复:
下载的php总是损坏

在我的代码中,我可以下载一个文件,但它主要会导致文件损坏等。我真的被卡住了,有人知道如何改进我的代码。我的图像/文档存储在“课程”文件夹中

他们下载并且有一个“png”图像可以完美下载,但是上传类似的PNG文件会导致文件损坏。

    $cool = $_GET['id'];

   $sql = "SELECT id, type, name, size FROM upload WHERE id='$cool'";

 $result = mysql_query($sql, $db);
 $data = mysql_result($result, 0, "id");
 $name = mysql_result($result, 0, "name");
  $size = mysql_result($result, 0, "size");
  $type = mysql_result($result, 0, "type");

 header("Content-type: $type");
 header("Content-length: $size");
  header("Content-Disposition: attachment; filename=$name");
  header("Content-Description: PHP Generated Data");
 header('Content-Transfer-Encoding: binary');
  header('Expires: 0');
  header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
 header('Pragma: public');
ob_clean();
flush();
readfile($name);
exit();
4

1 回答 1

-1
  1. 阅读 SQL 注入和/或迁移到 PDO 或 MySQLi。由于这个原因,标准的 MySQL 函数已被弃用。

  2. 此错误可能来自大量可能的问题。您正在从数据库中提取文件名和大小 - 它们真的匹配吗?您确定该文件甚至存在吗?(您没有检查 - 因此,它的输出可能只是一条错误消息,告诉您文件不存在)如果您使用记事本打开损坏的下载,您会得到什么?您可能会在其中发现 PHP 错误。

在原始问题被编辑之前,我不会更精确。

于 2012-11-19T21:55:07.940 回答