'pg_read_file'
LANGUAGE 'internal' VolATILE CALLED ON NulL input Security INVOKER; 该函数就可以返回二进制函数了,也可以用CONVERT转化为自己需要的文本类型. 在具体应用中,如在数据主目录下建立一个graph目录,可以通过SQL语句下载该目录下的图形文件。 安全问题 本函数必须为超级用户(或授权超级角色的用户)才能使用。且只能读取数据主目录下的文件。 让普通用户拥有超级权限,是危险的。同时让用户不加选择的可以读取数据目录下的任何文件,也是危险的。 最好的方法是,让普通用户只读取某个特定目录下的文件。所以再建立一个函数 CREATE OR REPLACE FUNCTION "public"."pg_read_file_binary_s" (S_file text,I_SEEK bigint,I_LENGTH bigint) RETURNS bytea AS $BODY$ DECLARE IBIGINT; BEGIN IF I_LENGTH=0 then -- 获取文件的长度 I=(pg_stat_file(S_file)).size; else i=i_length; endif IF substr(S_file,5)<>'graph' raise exception '只能读取graph目录'; end if; return pg_read_file_binary(s_file,i_seek,i);
END $BODY$
LANGUAGE 'plpgsql' VolATILE CALLED ON NulL input Security defineR; 注意用超级用户建立该函数,并且将security设为definer. 则普通用户只用在调用该函数时会拥有超级权限,且该函数中已经进行了些限制. 总结
以上是内存溢出为你收集整理的让postgresql返回服务端的二进制文件全部内容,希望文章能够帮你解决让postgresql返回服务端的二进制文件所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)