损坏的文件下载PHP

损坏的文件下载PHP,php,Php,可能重复: 在我的代码中,我可以下载一个文件,但它主要导致一个损坏的文件等。我真的卡住了,任何人都知道如何改进我的代码。我的图像/文档存储在“课程”文件夹中 他们下载,有一个图像“png”下载完美,但上传类似的png文件会导致文件损坏 $cool = $_GET['id']; $sql = "SELECT id, type, name, size FROM upload WHERE id='$cool'"; $result = mysql_query($sql, $db);

可能重复:

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

他们下载,有一个图像“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();
  • 阅读SQL注入和/或转到PDO或MySQLi。正是因为这个原因,标准MySQL函数被弃用了

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


  • 在对原始问题进行编辑之前,我不会更加精确。

    不要因为第一个问题没有引起注意就打开重复的问题。修正你的预览问题!结构不良,很难看到这里的问题,请标记一些答案,您有14个问题没有任何答案标记为肯定,您的问题结构不良,请查看常见问题或停止争论堆栈溢出