2

わかりましたので、この質問が尋ねられたことは知っていますが、コードの何が問題なのかまだわかりませんでした。

画像をデータベースにアップロードして blob として保存し、ページに出力できるようにしようとしています。すべてが機能し、すべてが mysql データベースに保存されますが、ブロブをエコーアウトしようとすると、壊れたイメージが表示されます。これが私のコードです。

$file = $_FILES['image']['tmp_name'];

if(!isset($file)) {
echo "Please select image.";
} else {
    $image = addslashes(file_get_contents($_FILES['image']['tmp_name']));
    $image_name = $_FILES['image']['name'];
    $image_size = getimagesize($_FILES['image']['tmp_name']);

    if($image_size==FALSE) {
    echo 'that is not an image.';
    } else {
     if (!$insert = mysql_query("INSERT INTO photo VALUES ('', '$image_name', '$image')")) {
      echo "Problem uploading image";
     } else {
      $lastid = mysql_insert_id();
      echo "Image uploaded.<p />Your image:<p /><img src=ShowPics.php?id=$lastid>";
     }
    }

}



?>


<form action="Photosite.php" method="POST" enctype="multipart/form-data">
<input type="file" name="image"></br></br>
<input type="submit" value="Submit">
</form>

そして私のPHPページ

 <?php

 $id = addslashes($_REQUEST['id']);
 $image = mysql_query("SELECT * FROM photo WHERE id=$id");
 $image = mysql_fetch_assoc($image);
 $image = $image['image'];


 header("Content-type: image/jpeg");
 echo $image;

?>

助けていただければ幸いです??? 壊れた画像が表示される理由がわかりません...

4

3 に答える 3

2

最初の行の の前にスペースがあります<?php。コードでそのような場合、問題が発生します。画像をエコーする前に何も出力しないでください。

現在のファイルが正しいと確信している場合は、次のことができます

<?php
ob_start();

// do stuff

ob_end_clean();
header("Content-type: image/jpeg");
echo $image;

この回避策を使用すると、DB 内の BLOB が正しい場合に画像が表示されます。

変換を使用して phpmyadminで BLOB を確認できます。


PSaddslashesは、スラッシュの間に値を入れる場合にのみ役立ちます。

$id = addslashes($_REQUEST['id']);
$image = mysql_query("SELECT * FROM photo WHERE id='$id'");
于 2013-02-03T03:17:41.313 に答える
1

PHP ファイルの先頭にある非表示の BOM文字である可能性は十分にあります。

変更してください

header("Content-type: image/jpeg");
echo $image;

//header("Content-type: image/jpeg");
echo substr($image, 0, 20);

そして、それが有効な jpeg ファイルの開始のように見えるかどうかを確認します - 「ÿØÿàJFIF」のようなもの

先頭に '' がある場合は、少なくとも 1 つの PHP ファイルの先頭にバイト オーダー マーカーがあり、削除する必要があることを意味します。

于 2013-02-03T03:03:21.630 に答える
0

うーん、このサイト [http://www.boogiejack.com/html-help/html-help-broken-image.html] からこの投稿を読むまで、壊れた画像の問題についても共有しました。最初の観察は、テーブル フィールドの作成に使用した名前を確認するのに役立ち、テーブル フィールドに間違った名前を付けたことにショックを受けました。それらを修正した後、私のイメージは、神に感謝し、喜びに満ちて幸せでした. テーブルのフィールドを確認してください。私のようにスペルを間違えている可能性があります。:)

于 2013-04-18T02:37:45.573 に答える