Борьба с отображением изображения blob с php

Я создаю простой сайт, я хочу разрешить пользователям загружать и изменять свои аватары. В настоящее время я смог загрузить изображения в базу данных mysql, хранящиеся в виде блоков с кодом следующим образом:

//connected to DB, userID fetched $image = $FILES['fileToUpload']['tmp_name']; $fp = fopen($image, 'r'); $content = fread($fp, filesize($image)); $content = addslashes($content); fclose($fp); $sql = "UPDATE tbUsers SET profileImage = '".$content."' WHERE userID = ".userID; $result = mysql_query($sql) or die (mysql_error()); 

Когда я загружаю файлы из phpmyadmin после загрузки, они сохраняются как .bin-файлы, но их можно просматривать в обычном режиме. Я не уверен, правильно это или нет. Мой код для отображения изображений выглядит следующим образом:

HTML:

 <?php echo '<img src ="showPic.php?q='.$_SESSION['profile'].'"/>'; ?> 

PHP:

 if (!empty($_GET['profile']) && is_numeric($_GET['profile'])) { $con = mysql_connect("localhost", "root", ""); $mysql_select_db("projectDB"); $sql = "SELECT profileImage FROM tbUsers WHERE userID = ". $_GET['profile']; $result = mysql_query($sql) or die (mysql_error()); header('Content-type: image/jpeg'); $row = mysql_fetch_object($result); echo $row['image_data']; } 

Я не уверен, пытаюсь ли я правильно отображать изображение, любая помощь (исправления / альтернативные решения) была бы очень признательна 🙂

Вы можете сделать это :

 if (!empty($_GET['profile']) && is_numeric($_GET['profile'])) { $con = mysql_connect("localhost", "root", ""); $mysql_select_db("projectDB"); $sql = "SELECT profileImage FROM tbUsers WHERE userID = ". $_GET['profile']; $result = mysql_query($sql) or die (mysql_error()); $content = mysql_result($result,0,"file_content"); $name = mysql_result($result,0,"file_name"); $type = mysql_result($result,0,"file_type"); $size = mysql_result($result,0,"file_size"); header("Content-type: $type"); echo $content } 

Примечание. У вас должен быть столбец в вашей таблице, где вы сохраняете данные BLOB

file_name = для сохранения имени файла

 $_FILES['file']['name'] 

file_type = для сохранения типа файла

 $_FILES['file']['type'] 

file_size = для сохранения размера файла

 $_FILES['file']['size'] 

Вы выбираете это

 $sql = "SELECT profileImage FROM tbUsers WHERE userID = ". $_GET['profile']; 

и ссылаться на не выбранную колонку

 echo $row['image_data'];