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 側が 18.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 に答える