【问题标题】:Views base64 encoded blob in HTML with PHP使用 PHP 在 HTML 中查看 base64 编码的 blob
【发布时间】:2012-01-19 21:28:27
【问题描述】:

有点麻烦我试图查看我的服务器上作为 blob 保存的 base64 编码图像。我想用图像标签在里面查看它,或者将它作为一个 html 文件回显,我可以用图像标签引用它。

问题是我的服务器返回的 blob 数据错误。

    <?php

       $select = "SELECT `data` 
               FROM  `sandbox`.`photos` 
               WHERE `id` = 4
               LIMIT 0 , 1";

        $result = mysql_query($select, $connection);



         while($row = mysql_fetch_array( $result )){

           $blob_data = $row[0];

           echo "$blob_data";

           }

    ?>

问题是这会返回 5.533782782 * E。

如何将其视为图像?需要解码吗?

【问题讨论】:

  • 文体备注:使用echo $blob_data。无需引用变量。

标签: php html image base64 blob


【解决方案1】:

你可以使用mysqlcast or convert函数。也可以试试bin2hexPHP函数。

【讨论】:

    【解决方案2】:

    数据库没有创意 - 它们存储您输入的数据几乎与您输入的数据完全相同,然后检索该确切数据。

    这意味着如果您在插入数据之前将数据编码为 base64,则必须从 base64 解码才能获得有意义的信息。


    注意:最好将文件作为图像存储在文件系统中,并将文件路径存储在数据库中,而不是将图像直接放入数据库中

    您可以使用任何您想要的文件路径,甚至可以从文档根目录之外使用(但应注意不要允许遍历/显示敏感文件):

    while($row = mysql_fetch_array( $result )){
    
      $file_path = $row[0];
    
      echo file_get_contents($file_path);
    
    }
    

    【讨论】:

    • 谢谢,但是我想动态引用图像,以便它们进入数据库。
    • “动态引用”图像的哪些方面无法将其存储在文件系统中?
    【解决方案3】:

    试试这个:

    echo '<img src="data:image/png;base64,'.base64_encode($blob_data).'">';
    

    【讨论】:

    • 或者你可以这样做 - 但我不认为这是 100% 跨浏览器
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-17
    • 2011-09-23
    • 2012-07-17
    • 2015-07-21
    • 2015-08-08
    相关资源
    最近更新 更多