ホームページ >バックエンド開発 >PHPチュートリアル >PostgreSQL の bytea フィールドを使用したファイルの保存と読み取り、読み取りエラーの処理_PHP チュートリアル

PostgreSQL の bytea フィールドを使用したファイルの保存と読み取り、読み取りエラーの処理_PHP チュートリアル

WBOY
WBOYオリジナル
2016-07-20 11:13:571379ブラウズ

PostgreSQLのbyteaフィールドタイプは、データをバイナリ形式で保存できるという利点がありますが、元々Webサイトのディレクトリに保存されていたファイルをデータベースに保存できるという点が欠点です。データベース内のデータ量が大幅に増加し、バックアップとリカバリに多くの時間が無駄になり、データが間違っている可能性もあります。個人的には、ファイルサイズが小さい場合にこの保存方法を使用すると非常に便利だと思います。

本題に戻り、byteaフィールドを使ってファイルの保存と読み込みを行う具体的な実装方法を紹介します。 1 つ目は、bytea フィールドにファイルを保存する方法です。主に使用される方法は、PHP の pg_escape_bytea メソッドです。コードは次のとおりです。 リーリー

PHP の pg_unescape_bytea メソッドは、bytea フィールドからファイルを復元するために使用されます。実装コードは次のとおりです。 リーリー

ファイルをエクスポートした後、バイナリ データが正しくトランスコードされていない場合、ファイルは開かれません。たとえば、正しくない PDF ファイルを開くと、次のようなエラーが表示されます。

この種のエラーは、データベースの移行中に特に発生する可能性が高くなります (私は PostgreSQL 8.4 から 9.1 に移行しました)。解決策は、PostgreSQL 構成ファイル postgresql.conf を変更し、bytea_output の出力タイプをエスケープ タイプ (エスケープ) 出力に設定することです。 . 、つまり bytea_output = 'escape' (先頭に # がある場合は、構成を削除して有効にします) し、PostgreSQL 構成を再ロードして変更を有効にし、バイナリ データをデコードして出力できるようにします。普通にファイルします。


ブログステートメント:

当ブログ内の記事は、タイトルに「転載」とあるものを除き、すべて私が独自に作成したもの、または情報を参考にまとめたものであり、非転載の記事を引用する場合にはその旨を明記してください。 —— ブログ Garden-pallee

http://www.bkjia.com/PHPjc/440335.html

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/440335.html技術記事 PostgreSQL の bytea フィールド タイプは、データをバイナリ形式で保存できるという利点があります。欠点は、元々 Web サイトのディレクトリに保存されていたファイルをデータベースに保存できることです。
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。