时间:2021-07-01 10:21:17 帮助过:5人阅读
言归正传,下面介绍一下使用bytea字段存读取文件的具体实现方法。首先是文件存储于存储于bytea字段的方法,主要用到的就是PHP中的pg_escape_bytea方法,代码如下:
= pg_connect("host='localhost' dbname='dbname' user='user' password='password' port='port'"('Could not connect:' . = ("utf-8", "gbk", );
= ( = pg_escape_bytea();
= "}')", ?>
从bytea字段中还原文件用到的是PHP中的pg_unescape_bytea方法,实现代码如下:
= pg_connect("host='localhost' dbname='dbname' user='user' password='password' port='port'"('Could not connect: ' . = "" . ;
= pg_query(, ( = pg_fetch_array(, , = ['contents' = pg_unescape_bytea();
(, );
?>
导出文件后,如果二进制数据转码错误就会出现文件打不开的现象,比如错误的PDF文件打开时弹出错误如下图:
这种错误在数据库迁移时特别容易出现(本人是从PostgreSQL 8.4迁移到9.1),解决的方法是修改PostgreSQL的配置文件
postgresql.conf,将bytea_output的输出类型设置为转义类型(escape)输出,即bytea_output = 'escape'(如果前面有#,删除开启配置),然后reload一下PostgreSQL的配置使修改生效,这样二进制数据就可以正常解码并输出到文件。
博客声明:
本博客中的所有文章,除标题中注明“转载”字样外,其余所有文章均为本人原创或在查阅资料后总结完成,引用非转载文章时请注明此声明。—— 博客园-pallee
http://www.bkjia.com/PHPjc/440335.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/440335.htmlTechArticlePostgreSQL中的bytea字段类型可以以二进制的形式存储数据,这样做的好处就是可以将原本存储在网站目录下的文件存储到数据库中,坏处就是...