У меня есть четыре файла:Изображения отображаются пустыми при получении из PHP базы данных MySQL
main.php файл моего HTML отправить форму, которая отправляет изображение и текст с изображением
storeinfo.php его отправляет все мои данные из формы html в базу данных, в которой он работает, мое изображение и текст из формы успешно отправлены.
image.php извлекает изображение из базы данных и имеет функцию заголовка для преобразования aimagetype в любой формат изображение png, jpeg ect.
show.php извлекает весь текст с изображениями и отображает все изображения с текстом , однако изображения не отображаются, вместо этого я получаю пустой ящик, когда изображение не отображается.
Я не могу найти свою ошибку, я предполагаю, что это что-то делать с функцией заголовка в image.php или при попытке отобразить изображение с HTML IMG тега в шоу. PHP. Загрузка изображения (которое хранится как blob) в базу данных успешно. Почему изображения не отображаются?
код, чтобы каждой странице:
main.php HTML-форма
<form enctype="multipart/form-data" action="storeinfo.php" method="POST"> <table border=0 align=center bgcolor=black width=100%> <tr><td colspan=2><h2> </h2></td></tr> </table> <table border=0 align=center bgcolor=grey> <tr><td colspan=2><h2>Animal Information</h2></td></tr> <tr> <td>Name</td><td><input type=text name="aname"></td> </tr> <tr> <td>Description</td><td><input type=text name="adetails"></td> </tr> <tr> <td>Photo</td><td><input type=file name="aphoto"></td> </tr> <tr> <td></td><td><input type=submit name="submit" value="Store Information"></td> </tr> </table> </form>
storeinfo.php
<?php $conn = mysql_connect("localhost","root",""); if(!$conn) { echo mysql_error(); } $db = mysql_select_db("imagestore",$conn); if(!$db) { echo mysql_error(); } $aname = $_POST['aname']; $adetails = $_POST['adetails']; $aphoto = addslashes (file_get_contents($_FILES['aphoto']['tmp_name'])); $image = getimagesize($_FILES['aphoto']['tmp_name']);//to know about image type etc $imgtype = $image['mime']; $q ="INSERT INTO animaldata VALUES('','$aname','$adetails','$aphoto','$imgtype')"; $r = mysql_query($q,$conn); if($r) { echo "Information stored successfully"; } else { echo mysql_error(); } ?>
image.php
<?php $conn = mysql_connect("localhost","root",""); if(!$conn) { echo mysql_error(); } $db = mysql_select_db("imagestore",$conn); if(!$db) { echo mysql_error(); } $id = $_GET['id']; $q = "SELECT aphoto,aphototype FROM animaldata where id='$id'"; $r = mysql_query("$q",$conn); if($r) { $row = mysql_fetch_array($r); $type = "Content-type: ".$row['aphototype']; header($type); echo $row['aphoto']; } else { echo mysql_error(); } ?>
show.php
<?php //show information $conn = mysql_connect("localhost","root",""); if(!$conn) { echo mysql_error(); } $db = mysql_select_db("imagestore",$conn); if(!$db) { echo mysql_error(); } $q = "SELECT * FROM animaldata"; $r = mysql_query("$q",$conn); if($r) { while($row=mysql_fetch_array($r)) { //header("Content-type: text/html"); echo "</br>"; echo $row['aname']; echo "</br>"; echo $row['adetails']; echo "</br>"; //$type = "Content-type: ".$row['aphototype']; //header($type); //$lastid = mysql_insert_id(); // $lastid = $lastid; //echo "Your image:<br /><img src=image.php?id=$lastid />"; echo "<img src=image.php?id=".$row['id']." width=300 height=100/>"; } } else { echo mysql_error(); } ?>
Какой тип вы используете для хранения контента в БД? Также я не совсем уверен, что вы можете сохранить двоичный контент в db. – Tomasz
Чтобы начать, вы должны указать строку источника изображения: 'src = 'image.php? Id =". $ Row [' id ']. "''. Кроме того, вы должны попытаться сузить проблему, какие ответы вы получаете для изображений на вкладке net ваших инструментов разработчиков, сообщений об ошибках mysql или содержимого изображения? – jeroen
Я использую id, aname varchar 200, текст adetails, BLOB для прицеливания, aphototype varchar 200 – Tom