【问题标题】:Image from database doesn't load PHP PDO来自数据库的图像不加载 PHP PDO
【发布时间】:2019-03-19 23:04:47
【问题描述】:

我正在尝试加载存储在 mysql 数据库中的 blob 字段中的图像。连接到用户的所有其他字段都在工作。

图片的数据库获取具体是:

public function singleIMG(){
        $this->execute();
        return $this->stmt->fetch(PDO::FETCH_ASSOC);
    }

我的用户模型中的查询函数是:

public function getJobImg($ekspert_id){
    $this->db->query("SELECT * FROM eksperti WHERE id = :id");

    $this->db->bind(':id', $ekspert_id);

    $row = $this->db->singleIMG();
    extract($row);
    return $row;
}

我在我的控制器中获取数据:

$template->img = $job->getJobImg($job_id);

最后,它没有加载视图:

<img src="data:image/jpg;base64,'.base64_encode($img['profile_img']).'" height="200" width="200" class="img-thumnail">

你能找出我的错误吗?

【问题讨论】:

  • 到目前为止你做了什么来调试这个?你检查过这个创建的 HTML 输出吗?您是否在模板中制作了 $img 的调试输出以验证它实际上包含您假设的内容? &lt;img src="..." …&gt; 是否甚至在 PHP 代码块中动态输出? (或者你只是在那个地方输出了静态文本 &lt;img src="data:image/jpg;base64,'.base64_encode($img['profile_img']).'" …?)
  • 我试图将它作为一个字符串输出,它确实从数据库中获取 blob 对象,但是当我在浏览器控制台中对其进行编码时,我得到一个 ERR_INVALID_URL 错误
  • 请显示模板中的整行,因为单引号和双引号对我来说似乎没有意义
  • 在将图像添加到数据库之前,您是否对图像进行 base64_encod 编码?
  • @RiggsFolly 不,我正在关注一个教程,那里的人在将文件插入数据库之前使用了 addlashes() 方法。我是否缺少任何步骤?

标签: php mysql pdo phpmyadmin base64


【解决方案1】:

&lt;?php ?&gt; 标签中没有 base64_encode,所以它只是显示为文本 base64_encode($img['profile_img']);

<img src="data:image/jpg;base64, <?php echo base64_encode($img['profile_img']); ?>" height="200" width="200" class="img-thumnail">

应该可以。我不熟悉使用 bas64 作为图像,所以我不确定你是否需要这样写:

<img src="data:image/jpg;base64,'<?php echo base64_encode($img['profile_img']); ?>'" height="200" width="200" class="img-thumnail">

或者如果它可以在没有单引号的情况下工作。

【讨论】:

    【解决方案2】:

    图片入库前使用base64_encode(),渲染图片时去掉encode函数,将data:image/jpg;base64保留在html标签内。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-07-05
      • 2018-04-02
      • 1970-01-01
      • 1970-01-01
      • 2013-07-28
      • 1970-01-01
      相关资源
      最近更新 更多