[pgsql-jp: 30688] Re: PHPの「pg_lo_import() 」を使用して\lo_export するとファイルサイズが異なる
後藤 義宏
ygotou @ bj.wakwak.com
2003年 8月 6日 (水) 00:45:29 JST
こんばんは。
On Tue, 05 Aug 2003 23:41:29 +0900
parasol @ anet.ne.jp wrote:
>psqlで\lo_exportすると、ファイルサイズが異なる現象が発生しました。
PHPのpg_lo_open()ではどうでしょうか?
作ったのがずいぶんと前なので記憶があやふやなのですが、確か
pg_lo_open()の場合、トランザクション処理が必要なので、psqlでの操作にも
必要なのかも知れません。(未確認です)
一度お試しください。
外してたらごめんなさい。
自前のソース(参考)↓
// 画像の番号が指定されている
$oid = $_GET{'oid'};
if (is_numeric($oid)) {
// トランザクション開始
pg_query("begin");
// 画像情報を取得する
if (pg_lo_export($oid, "/tmp/$oid")) {
$info = getimagesize("/tmp/$oid");
// echo "X = $info[0]<BR>\n";
// echo "Y = $info[1]<BR>\n";
// echo "TYPE = $info[2]<BR>\n";
switch ($info[2]) {
case 1: // GIF
Header("Content-Type:image/gif");
break;
case 2: // JPEG
Header("Content-Type:image/jpeg");
break;
case 3: // PNG
Header("Content-Type:image/png");
break;
case 6: // BMP
Header("Content-Type:image/bmp");
break;
default:
echo "画像番号が無効です<BR>\n";
exit;
break;
}
// Header("Cache-control:private");
unlink("/tmp/$oid");
} else {
echo "画像番号が無効です<BR>\n";
pg_query("rollback");
exit;
}
// 画像データをブラウザに出力
$fd = pg_lo_open($oid, "r");
if ($fd) {
pg_lo_read_all($fd);
pg_lo_close($fd);
} else {
pg_query("rollback");
exit;
}
// トランザクション終了
pg_query("commit");
} else {
echo "画像番号を指定してください<BR>\n";
}
--
後藤 義宏 <ygotou @ bj.wakwak.com>
pgsql-jp メーリングリストの案内