Я работаю над сайтом типа социальной сети для музыкантов, который использует базу данных MySql на phpMyAdmin. У меня возникла проблема с вложением веб-сайтов в файлы изображений в базу данных, а затем их отображение (для изображений профиля). Изображения сохраняются как LONGBLOB в базе данных.Вставить файл изображения в базу данных MySQL
Если я добавлю изображение непосредственно через phpMyAdmin, он отлично работает. Он хранится в формате .bin в формате данных LONGBLOB в соответствии с базой данных. На моем сайте я могу запрашивать и отображать его в совершенстве с помощью:
<img src="data:image/jpeg;base64,<?php echo base64_encode($memberpicture);?>"
ALT="Member does not have picture" WIDTH=100 HEIGHT=100></img>
Однако, если пользователь сайта создает профиль и вставляет изображение как изображение профиля, используя функциональные возможности веб-сайта «создать профиль», она не отображается по их профилю. Здесь выберите код изображения:
...
<div class="control-group">
<div class="controls">
<label>Band Picture</label>
<input type="file" name="picture"/>
</div>
</div>
...
А вот код вставки:
<?php
session_start();
foreach($_POST AS $key => $val) {
$_SESSION[$key]=$val;
}
mysql_connect("***", "***", "***");
mysql_select_db("musicians");
//...declare other values(name, bio, etc...
$cpicture=$_POST['picture'];
$cpicture = stripslashes($cpicture);
$cpicture = mysql_real_escape_string($cpicture);
$profileInsert="INSERT INTO profile(PROFILE_BANDNAME,PROFILE_GENRE,PROFILE_BANDBIO,
PROFILE_PICTURE,PROFILE_ART,PROFILE_MUSICVIDEO,PROFILE_PLAYLIST)
VALUES ('$cbandname','$cgenre','$cbio','$cpicture','$cart','$cvideo','$cplaylist')"
or die(mysql_error());
Если я смотрю на базу данных, есть файл там после вставки, но она крайне мала (около 16 байт), и его нельзя просматривать ни на веб-сайте, ни непосредственно из базы данных. Это .bin хранится как .bin в формате данных LONGBLOB в соответствии с базой данных, в отличие от .jpg, хранящейся как .bin. Любая помощь с этой вставкой была бы высоко оценена!
Почему именно frodo why - используйте файловую систему, пожалуйста, или для производительности Mongodb + GridFS – user956584
вы уверены, что изображение делает это на сервере? вы могли бы сделать что-то вроде copy ($ cpicture, «somepath») и просто убедиться, что он есть до того, как вы начнете публиковать его в базе данных. возможно, просто покажите его сразу после загрузки, чтобы убедиться? –