将图像文件插入MySQL数据库

时间:2013-03-18 22:32:28

标签: php mysql image insert jpeg

我正在为一个在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。 任何有关此插入的帮助都将非常感谢!

3 个答案:

答案 0 :(得分:0)

使用文件系统可能会更好但是如果你坚持按照你自己的方式工作,因为你的代码似乎不在表单中,没有方法或提交按钮?

答案 1 :(得分:0)

我认为问题出在MySql Server Networking中。检查配置中的max_allowed_pa​​cket:)

答案 2 :(得分:0)

不确定这是否有所不同,但是当我在Google上搜索时,您保存的代码与前几个结果的所有内容都不同:

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

也许只是尝试代码交换。

我会回应其他关于使用文件系统的评论/答案。但是,如果你只是试图让它像你在一些回复中提到的那样工作,只需从另一个站点复制一些工作代码。