【发布时间】: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