[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 メーリングリストの案内