2

我正在为音乐家开发一个社交网络类型的网站,该网站在 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。对此插入的任何帮助将不胜感激!

4

3 回答 3

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/主题/php/insights/740327-uploading-files-into-mysql-database-using-php

也许只是尝试代码交换。

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

于 2013-03-19T02:25:37.530 回答
0

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

于 2013-03-18T22:42:25.267 回答
0

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

于 2013-03-18T22:39:40.390 回答