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