2016-04-06 5 views
0

良い午後、よろしく!PHPはMySQLイメージを印刷しません

"ID"、 "ログイン"、 "パス"、 "イメージ"(BLOB)という4列の行を含むテーブルを持つデータベースがあります。私はユーザー認証などのシステムを持っており、ユーザーが登録した画像をトップバーに表示するように実装したいと考えています。すべては今のところかなりうまく働いている、唯一の問題は、データベースのイメージは次のように印刷されていることである。

ÿØÿàJFIF``ÿÛC %# , #&')*)-0-(0%()(ÿÛC (((((((((((((((((((((((((((((((((((((((((((((((((((
ÿÀ€€"ÿÄ ÿĵ}!1AQa"q2‘¡#B±ÁRÑð$3br‚ %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyzƒ„…†‡ˆ‰Š’ 
“”•–—˜™š¢£¤¥¦§¨©ª²³´µ¶·¸¹ºÂÃÄÅÆÇÈÉÊÒÓÔÕÖ×ØÙÚáâãäåæçèéêñòóôõö÷øùúÿÄ ÿĵw!1AQaq"2B‘¡±Á #3R 
ðbrÑ $4á%ñ&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz‚ƒ„…†‡ˆ‰Š’“”•–—˜™š¢£¤¥¦§¨©ª²³´µ¶·¸¹º 

詳細:私はNOTEPADでデータベースに選択した画像を開くと、それは上記のように同じです。

include "dbconnection.php"; 

$defaultpath = "img/avatar.png"; 

$sql = "SELECT * FROM `bg_users`"; 
$query = mysql_query($sql); 
$result = mysql_fetch_assoc($query); 

if (!isset($_SESSION)) { 

$_SESSION['UserImage'] = $result['image']; 

    print $_SESSION['UserImage']; 
} 
else { 

    echo "src='img/avatar.png'"; 
} 

?> 

IMAGE.PHPは再び、PHPとMySQLの間の相互作用はcompletly結構です。問題は、PHPがイメージとしてファイルを印刷していないことです。 image.phpにはすでにヘッダーパラメータが含まれているため、header("Content-type: image/png");を作成できません。

誰かが私にこれを手伝ってもらえませんか?私は非常に満足しています

ありがとう!

+5

まず、**イメージをHTMLに印刷するのではなく、その場所にURLを置くと、Webサーバーから要求されたときに画像が返されます。 –

+0

@AnttiHaapalaは正しいです。画像を出力するには別のPHPページが必要です。また、PHPでコンテンツタイプを宣言し、ob_flush()を使用してイメージを出力する直前に出力バッファをクリアするようにしてください。 –

+1

さて、技術的には、画像をデータURIとして出力することはできますが、処理が遅くなります。 –

答えて

1

まず最初に、私はあなたのデータベースに画像を保存せず、単にフォルダに保存してデータベースへのパスを保存する方が簡単です。

あなたは、それをあなたの方法を行うには、次の操作を行いたい場合:

echo '<img src="data:image/png;base64,'.base64_encode($result['image']).'"/>'; 

これはしかし本当に悪い習慣ですし、ページのロードにかなり遅くなるかもしれません。データベース構造を再評価してイメージを直接保存し、データベースにパスを保存することをお勧めします。

+0

から提供される必要があります画像が何画素以上であれば、これはページの読み込みにひどく遅くなるでしょう。 – bansi

+0

@バンシーよ、私はこれが裏書されるべきではないと言いました」)しかし、私は質問を編集してそのことを明確にします – Jester

+0

@Jester助けてくれてありがとう。あなたが言ったようにテーブルを再評価し、ユーザー登録をやり直してイメージファイルをフォルダとデータベースのパスに保存します。ありがとうございました。 –

関連する問題