2013-03-18 6 views
2

Я работаю над сайтом типа социальной сети для музыкантов, который использует базу данных 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. Любая помощь с этой вставкой была бы высоко оценена!

+0

Почему именно frodo why - используйте файловую систему, пожалуйста, или для производительности Mongodb + GridFS – user956584

+0

вы уверены, что изображение делает это на сервере? вы могли бы сделать что-то вроде copy ($ cpicture, «somepath») и просто убедиться, что он есть до того, как вы начнете публиковать его в базе данных. возможно, просто покажите его сразу после загрузки, чтобы убедиться? –

ответ

0

Использование файловой системы, вероятно, было бы лучше, но если вы настаиваете на том, чтобы делать это своим путем, как это работает, поскольку ваш код, похоже, не в форме, нет кнопки метода или отправки?

+0

Да, я понимаю, что было бы лучше сделать файловую систему, но этот проект должен состояться через 4 дня для класса, в котором я участвую, и я чувствую, что просто делаю работу LONGBLOB. Я только разместил соответствующие части кода, так как весь мой скрипт на странице очень длинный, потому что многое происходит. Метод для первого фрагмента - «post», а второй фрагмент кода - со страницы, на которую он отправляет сообщения. – user2177869

+0

У вас есть enctype = "multipart/form-data" на вашем элементе

? – H2ONOCK

+0

Нет, я просто , должен ли я изменить его на ? – user2177869

0

Я думаю, что проблема в MySql Server Networking. Проверьте max_allowed_packet в конфигурации :)

+0

Максимальный разрешенный размер файла - 2 ГБ на файл в моей базе данных, это то, что вы имеете в виду? – user2177869

+0

Макс допустимая длина пакета для отправки/получения с сервера – curiosity

+0

Я не уверен, как найти эту цифру, я использую hostgator для размещения домена и сервера, если это помогает ... – user2177869

0

Не уверен, если это делает разницу, но ваш код для сохранения внешне отличается от всех первых результатов, когда я искал в гугле:

http://www.php-mysql-tutorial.com/wikis/mysql-tutorials/uploading-files-to-mysql-database.aspx http://mirificampress.com/permalink/saving_a_file_into_mysql http://bytes.com/topic/php/insights/740327-uploading-files-into-mysql-database-using-php

возможно просто попробуйте обменять код.

Я бы повторил другие комментарии/ответы здесь только по поводу использования файловой системы. Но если вы просто пытаетесь заставить его работать, как вы упомянули в некоторых своих ответах, просто скопируйте какой-либо рабочий код с другого сайта.

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