损坏的文件下载PHP

时间:2012-11-19 21:51:38

标签: php

  

可能重复:
  download php is always damaged

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

他们下载并且有一个图像'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();

1 个答案:

答案 0 :(得分:-1)

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

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

  3. 在编辑原始问题之前,我不会再精确了。