2012-04-17 6 views
-3

MySQLサーバーからjpgイメージを選択して別の部門にエコーしようとすると、次のようにascii文字が混じって表示されます。divでPHPのイメージをエコーするときにエラーが発生する

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<meta http-equiv="Content-Type" content="image/jpeg; charset=UTF-8" /> 
<title>Untitled Document</title> 
</head> 
<body> 

<div id = "myDiv"> 
<h2>Div</h2> 
<?php 
    require_once('appvars.php'); 
    require_once('connectvars.php'); 
    $dbc = mysqli_connect(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME); 
    $id = 1; 
    $query = "SELECT image FROM images WHERE id=?"; 
    $stmt = $dbc->prepare($query); 
    $stmt->bind_param("i",$id); 
    $stmt->execute(); 
    $stmt->store_result(); 
    $stmt->bind_result($image); 
    $stmt->fetch(); 
    echo $image; 
?> 
</div> 
</body> 
</html> 

ありがとうございました!

+0

私は 'echo $ image;'が完全にうまく動作することを確信しています。たぶんあなたはあなたが尋ねたいことを書くべきでしょうか? (完璧に言えば、それはASCII文字の混乱として出てきますので正しいです。コンピュータ上のものが許容範囲内で壊れていなければ)。 – hakre

+0

データベース内のイメージパスの周囲にhtmlコードがあるのだろうかと思います。 – Philipp

答えて

0

ブラウザは、あなたがエコーしている "div"内の画像を理解していません。このPHPスクリプトを別にして<div><img src="/path/to/script.php"></div>を使用する必要があります。それは、コンテンツがイメージであることをブラウザに伝えます。

2

Erm ...だから、あなたはHTMLや画像を送っていますか?両方を送ることはできません!

(まあ、あなたは、data: URLを通じて、それは非常に古いIEでサポートされていないことができます)、それを見てすることで

は、あなたがHTMLを使用している唯一の理由は、コンテンツタイプヘッダを設定することです。その場合にはあなただけのPHP必要があります:あなたは本当にHTMLに埋め込まれた画像を持っているしたい場合は

header("Content-Type: image/jpeg"); 

を、試してみてください。

echo "<img src=\"data:image/jpeg;base64,".base64_encode($image)."\" />"; 
0

はあなたがここに静かに多くのことを混同。まず、間違ったコンテンツ記述子を持つHTML文書があります。次に、生のイメージデータをHTMLドキュメントに送信することはできません。 - それ以前にbase64でエンコードする必要があります。

0

まず最初に、イメージやその他の大きなバイナリファイルをデータベースに保存することをお勧めします。ファイルシステムに保存し、それらのパスをDB。

第2に、画像データをページの真ん中に滲ませることはできません。 HTML <img>タグを使用する必要があります。上記のようにKolinkはイメージをHTMLに埋め込むことができますが、決してキャッシュされないという意味では推奨しません。サーバーに別のURLの画像を提供して、それをページに埋め込むようにしてください。<img src="path/to/image" alt="Alternate text here" />

関連する問題