2015-03-24 3 views
1

У меня возникают проблемы с отображением изображения из базы данных mysql. Я могу загрузить изображение в базу данных mysql, однако, если я хочу получить его из базы данных, он отображается в тексте Gibberish.Отображение изображений из базы данных mysql - php

Вот upload.php

if (isset($_FILES['image']) && $_FILES['image']['size'] > 0) { 

    $filename = mysqli_real_escape_string($mysqli,$_FILES['image']['name']); 
    $tmpName = $_FILES['image']['tmp_name']; 
    $fp = fopen($tmpName, 'r'); 
    $data = fread($fp, filesize($tmpName)); 
    $data = addslashes($data); 
    fclose($fp); 

    $query = "INSERT INTO `TABLES` (`image`) 
      VALUES(NULL,'$data')"; 
    $result = $mysqli->query($query); 
} 

view.php

$mysqlquery = "SELECT * FROM TABLE"; 
$results = $mysqli->query($mysqlquery); 

if($results->num_rows > 0){ 
while ($row = $results ->fetch_assoc()){ 
echo '<div align = "center">'; 
echo "<b>".$row["image"]. "<br></b>"; 
header("Content-type: image/jpeg"); 
    } 
} 
+0

Использование img src для 'echo '". $ Row ["image"]. «»; ' –

+0

Да, я слышал, вы должны использовать это, но я не уверен, что происходит внутри img src – r123456

+0

Это возможный дубликат [этого сообщения SO] (http://stackoverflow.com/questions/4375302/using -imagejpeg к сохранить обслужен-образ-файл). –

ответ

0

Попробуйте это и не забудьте дать путь изображения перед источником

echo "<img src='your image location directory/". $row['image'] .'" >"; 
+0

- это каталог изображений, где находится место хранения изображения? – r123456

+0

все еще показывает текст тарабарщины – r123456

0

Oooooh ... Я просто Желание У меня был ответ на этот вопрос ...

Некоторые мысли.

Во-первых, из личного опыта я настоятельно рекомендую хранить изображения в базе данных. Во-первых, ваши резервные копии базы данных быстро станут смешными. Более общий и лучший подход заключается в том, чтобы хранить изображения в файловой системе и хранить только местоположение (например, /img/pic03.jpg) изображения в базе данных.

Далее, я вижу, вы изменяете полученные двоичные данные:

$tmpName = $_FILES['image']['tmp_name']; 
$fp = fopen($tmpName, 'r'); 
$data = fread($fp, filesize($tmpName)); 
$data = addslashes($data); 
fclose($fp); 

Может быть, вы знаете что-то, что я не делаю (это не сложно), но в целом, если вы gerfingerpoke с данными бинарного изображения вы получите ... um ... тарабарщина. Попробуйте отключить эти линии и посмотреть, что произойдет.

Смежные вопросы