【问题标题】:php mysql upload an image to databasephp mysql 上传图片到数据库
【发布时间】:2013-03-12 21:50:52
【问题描述】:

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

当我尝试打印时,图像不可见

当我检查数据库表时,它以奇怪的格式显示了一堆数据,我假设是图像数据

这里是代码

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);

图片显示代码

$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>';
    }

当我尝试显示图像时,我没有得到任何输出,我通过 putty 检查数据库,我看到大量奇怪的字符,我假设图像的项目。

想法?

【问题讨论】:

  • addslashes 已经不太好了。 MySQLi 支持参数化查询——使用它们。此外,您不能只将图像的字节输出到 HTML 页面中并期望它显示为图像。
  • 是的,将图像存储在您的文件系统中,将图像的路径存储在数据库中的 varchar 中。
  • 您不能只将原始图像内容回显到 HTML。
  • Dragos 我读过那篇文章,它工作得更好,显示出一个小正方形,但仍然没有图像。它只适用于jpeg吗?我该怎么做才能看到超过 1 种类型的图像

标签: php mysql image-uploading


【解决方案1】:

您最终可以尝试替换这两行:
$content = $row['image']; echo $content;
与:
echo '&lt;img src="data:image/jpeg;base64,' . base64_encode( $row['image'] ) . '" /&gt;';

【讨论】:

  • Dragos 我读过那篇文章,它工作得更好,显示出一个小正方形,但仍然没有图像。它只适用于jpeg吗?我该怎么做才能看到超过 1 种类型的图像
猜你喜欢
  • 1970-01-01
  • 2013-03-02
  • 2015-05-27
  • 2012-02-24
  • 2012-07-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多