我正在为音乐家开发一个社交网络类型的网站,该网站在 phpMyAdmin 上使用 MySql 数据库。我在网站将图像文件插入数据库然后显示它们(用于个人资料图片)时遇到问题。图像在数据库中存储为 LONGBLOB。
如果我直接通过phpMyAdmin添加图片,效果很好。它是根据数据库以 LONGBLOB 数据类型存储为 .bin 的 .jpg。在我的网站上,我可以使用以下方法完美地查询和显示它:
<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 个字节),无法在网站上或直接从数据库中查看。根据数据库,它是以 LONGBLOB 数据类型存储为 .bin 的 .bin,而不是存储为 .bin 的 .jpg。对此插入的任何帮助将不胜感激!