データベースのBLOB列に格納されている画像を表示しようとしています。
SELECTを使用してデータベースからデータをフェッチし、データの変換を実行せず、次のように表示します(出力のみが次のスクリプトから)。
header("Content-Type: image/jpeg");
echo $image;
chromeは、画像の正しいサイズおよび正しいMIMEタイプ(image/jpeg
)としてコンテンツサイズを表示していることに注意してください。ヘッダーとデータベースのBLOBが正しいことを確認する前に、何もエコーされません。 <?php ?>
タグの前後に末尾の空白もありません。
chrome/IEは画像アイコンを表示しますが、画像自体は表示しません。何か案は?
編集:画像はデータベースから取得されます:
$sql = "SELECT * FROM products WHERE id = $id";
$sth = $db->query($sql);
$row = $sth->fetch();
$image = $row['image'];
var_dump($ image)の結果:
string 'ÿØÿà�JFIF��x�x��ÿá�ZExif��MM�*�����������J��������Q�������Q������tQ������t�����† ��±ÿÛ�C�
ÿÛ�CÿÀ�_"�ÿÄ�����������
ÿÄ�µ���}�!1AQa"q2‘¡#B±ÁRÑð$3br‚
%&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyzƒ„…†‡ˆ‰Š’“”•–—˜™š¢£¤¥¦§¨©ª²³ ´µ¶·¸¹ºÂÃÄÅÆÇÈÉÊÒÓÔÕÖ×ØÙÚáâãäåæçèéêñòóôõö÷øùúÿÄ��������'... (length=60766)
このようにしてみてください。
DBへの挿入用
$db = mysqli_connect("localhost","root","","DbName"); //keep your db name
$image = addslashes(file_get_contents($_FILES['images']['tmp_name']));
//you keep your column name setting for insertion. I keep image type Blob.
$query = "INSERT INTO products (id,image) VALUES('','$image')";
$qry = mysqli_query($db, $query);
Blobから画像にアクセスする場合
$db = mysqli_connect("localhost","root","","DbName"); //keep your db name
$sql = "SELECT * FROM products WHERE id = $id";
$sth = $db->query($sql);
$result=mysqli_fetch_array($sth);
echo '<img src="data:image/jpeg;base64,'.base64_encode( $result['image'] ).'"/>';
それがあなたを助けることを願っています。
ありがとう。
これは私がblobから画像を表示するために使用するものです:
echo '<img src="data:image/jpeg;base64,'.base64_encode($image->load()) .'" />';
さまざまな種類のコンテンツをblobフィールド/列に格納する必要があるため、次のようにコードを更新するとします。
echo "data: $mime" $result['$data']";
ここで、MIMEは、あらゆる種類の画像、テキスト、Word文書、テキスト文書、pdf文書、e.t.cなどです。データはblobの列コンテンツです