2013-03-12 79 views
0

在网上找到几个关于如何将图像上传到mysql数据库表的示例,二进制 不是服务器中的链接或文件夹。php mysql将图像上传到数据库

的IMAG是不可见的,当我尝试打印

当我检查数据库中的表,它显示了一堆怪异格式的数据,我假设的图像数据

这里用于显示图像

$sql = "SELECT * FROM `photos` WHERE userName = '$currentUser'"; 
    $result = mysqli_query($con,$sql); 
    while($row = mysqli_fetch_array($result)) 
    { 
     $content = $row['image']; 
     echo $content; 
     echo '<p id="caption">'.$row['caption'].' </p>'; 
    } 

当I TR代码

if(!empty($_FILES['image']) && $_FILES['image']['size'] > 0 && !empty($_POST['name'])) 
{ 
    // Temporary file name stored on the server 
     $tmpName = $_FILES['image']['tmp_name']; 

// Read the file 
$fp = fopen($tmpName, 'r'); 
$data = fread($fp, filesize($tmpName)); 
$data = addslashes($data); 
fclose($fp); 

代码y显示图像我没有得到任何输出,我通过腻子检查数据库,并且我看到大量奇怪的字符,我假设图像的项目。

想法?

+1

'addslashes'已经不那么好。 MySQLi支持参数化查询 - 使用它们。另外,您不能只将图像的字节输出到HTML页面,并期望它显示为图像。 – Ryan 2013-03-12 21:52:20

+1

是的,将图像存储在文件系统中,数据库中varchar的图像路径。 – michi 2013-03-12 21:52:40

+0

您不能将原始图像内容回显为HTML。 – 2013-03-12 21:53:52

回答

2

你可能最终尝试更换这两行:
$content = $row['image']; echo $content;
有:
echo '<img src="data:image/jpeg;base64,' . base64_encode($row['image']) . '" />';

+0

Dragos我阅读那篇文章,它的工作更好,显示一个小方块,但没有图像仍然。它只能使用jpeg吗?我如何做到这一点,以便超过1种类型的图像可见 – user1050632 2013-03-12 22:00:00