-4

重複の可能性:
ダウンロード php は常に破損しています

私のコードでは、ファイルをダウンロードできますが、ほとんどの場合、ファイルが破損するなどの結果になります。私の画像/ドキュメントはフォルダ「レッスン」に保存されています

彼らはダウンロードし、完全にダウンロードされる「png」という画像が1つありますが、同様の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. このエラーは、多数の考えられる問題から発生する可能性があります。DB からファイル名とサイズを取得しています - それらは本当に一致していますか? ファイルが存在してもよろしいですか?(チェックしていないので、ファイルが存在しないというエラー メッセージが出力されるだけかもしれません) メモ帳を使用して破損したダウンロードを開くとどうなりますか? そこに PHP エラーが見つかる可能性があります。

元の質問が編集されるまで、これ以上正確にはなりません。

于 2012-11-19T21:55:07.940 に答える