【问题标题】:HTML/PHP/ODBC/PGSQL Base64 Image not displayed completelyHTML/PHP/ODBC/PGSQL Base64 图像未完全显示
【发布时间】:2016-05-02 05:41:16
【问题描述】:

当我使用 PostgreSQL(来自 MySQL 和 PHP mysqli-connector)将 Web 应用程序转换为 ODBC 时,我目前遇到了一个奇怪的问题。

我注意到在 PostgreSQL 数据库中存储为 bytea 并放入 PHP 的 base64 函数的图像未正确显示。在某些时候,它在几行后被切断。这个截断是存储在我们数据库中的所有bytea 图像数据,我们有用于徽标和签名的数据。

如果您使用浏览器的检查器检查 img 标签,您会看到(至少在 Chrome 中)该图像丢失了很多数据。

我所做的是 SELECT * FROM table 然后在 for 循环中将图像编码为 base64:

$clients[$i]['logo'] = base64_encode($clients[$i]['image']);

$clients[$i]['image'] = this is the bytea in the database and

$clients[$i]['logo'] = this is the base64 String that I display in a Smarty template like this: data:image/png;base64,{$client.logo}

希望你能帮忙。

【问题讨论】:

  • 你能给我们看一些相关的PHP代码吗?例如:将值插入bytea 字段的代码;您检索值并将其放入$clients[$i]['image'] 的代码。另外,您是否检查过此 PHP 手册页上的注释? php.net/manual/en/function.pg-escape-bytea.php
  • 取消标记smarty 并标记postgresql,因为这似乎更多地是关于数据库交互而不是模板逻辑。
  • 谢谢。我没有写入数据库,因为它是一个监控工具。另一面正在由另一家公司开发。但是我最近找到了一个解决办法:php.ini settings -> odbc.defaultlrl = 65536 was set to about 4xxx.
  • 很高兴您找到了解决方案。您应该add it as an Answer to your own Question,以便将来发现此问题的其他人受益。 :)

标签: php image postgresql base64 bytea


【解决方案1】:

解决方法是 odbc.ini 文件中的数据长度。如果长度有限,过长的base64字符串会被截掉。只是需要增加尺寸。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-03-23
    • 1970-01-01
    • 2012-02-08
    • 1970-01-01
    • 2012-07-28
    • 2019-12-14
    • 2020-03-02
    相关资源
    最近更新 更多