1

我正在尝试将文件保存在数据库中,但无法检索它。结果不是有效文件。

隔离部分代码,我认为这应该可行:

$content = pg_escape_bytea (file_get_contents($tmp)); //image.jpg   
header('Content-type: ' . $mime); // image/jpg
echo pg_unescape_bytea($content); exit;

$content已存储,但我无法再次读取!

该怎么办?

4

1 回答 1

1

一个可能的解释是您处于此配置中:

  • PHP 端使用一个8.4或更旧的libpq
  • 服务器是9.0或更新
  • bytea_output配置参数保留为默认值(hex )

在这种情况下,pg_unescape_bytea将无法正确解码来自数据库的文本格式的 bytea 内容。作为一种解决方法,您可以添加到 php 代码中:

pg_query("SET bytea_output=escape");

在选择 bytea 内容之前,看看是否有区别。如果它确实解决了问题,您可以通过发出以下命令使其成为数据库的持久设置:

ALTER DATABASE mydb SET bytea_output=escape;

直到升级libpq到新版本。

于 2013-02-22T15:51:00.123 回答