Я создаю простой сайт, я хочу разрешить пользователям загружать и изменять свои аватары. В настоящее время я смог загрузить изображения в базу данных 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'];