[PHP-users 24370] ラージオブジェクトでの画像登録

ume ume @ aguagu.ddo.jp
2005年 2月 4日 (金) 16:21:45 JST


梅田と申します
PHPとPostgreSQLの組合わせを勉強中ですが
(ラージオブジェクトについて
 理解不足なので参考ページのまねで書いたのですが)
画像登録が出来なくて悩んでます。

クライアントパソコンからデータを探せない?
なぜなんでしょう?

【エラー表示内容】
エラー発生!
errno = 2 
errmsg = fopen(E:\a\テスト用\テスト画像.jpg): failed to open stream: No such file or directory 
filename = /usr/home/www/lib/test51-w.inc 
linenum = 106 
vars = Array 

エラー発生!
errno = 2 
errmsg = filesize(): Stat failed for E:\a\テスト用\テスト画像.jpg (errno=2 - No such file or directory) 
filename = /usr/home/www/lib/test51-w.inc 
linenum = 107 
vars = Array 

エラー発生!
errno = 2 
errmsg = fread(): supplied argument is not a valid stream resource 
filename = /usr/home/www/lib/test51-w.inc 
linenum = 107 
vars = Array 

エラー発生!
errno = 2 
errmsg = pg_exec(): Query failed: ERROR: relation "file_lobj" does not exist 
filename = /usr/home/www/lib/test51-w.inc 
linenum = 113 
vars = Array 

データ Erro:insert into file_lobj values(01,テスト画像.jpg)

【動作環境】
FreeBSD 4.8-RELEASE
Apache/1.3.31
PHP/4.3.10
PostgreSQL 7.4.6

【フィールド】
CREATE TABLE test (
code      INTEGER, --コード番号
image_oid OID,     --資源 写真
id        SERIAL,  --通し番号
CONSTRAINT KEY_NAME primary key (id)
);


【データ登録PHP】(一部抜粋)

$conn = pg_connect("dbname=test user=foo");
pg_exec($conn,"begin");
if (get_magic_quotes_gpc()) {
    $filename = basename(str_replace("\\\\","/",$image_oid));
  } else {
    $filename = basename(str_replace("\\","/",$image_oid));
  }  

echo "$filename<BR>\n";

$oid = pg_Locreate($conn);
$Lobj = pg_Loopen($conn,$oid,"w");
$fd = fopen($image_oid,"r");
$read_file = fread($fd,filesize($image_oid));
pg_Lowrite($Lobj,$read_file);

$sql = "insert into file_lobj values($code,$filename)";
$rtn = pg_exec($conn,$sql);
if (!$rtn) {
    echo "データ Erro:".$sql;
    pg_exec($conn,"rollback");
    exit;
  }
pg_exec($conn,"commit");
pg_exec($conn,"end");
pg_close($conn);

【データ入力PHP】(全文)
<?php
function ifset($name, $default = "") {
  if (isset($_SESSION[$name]))
     return($_SESSION[$name]);
  else
    return $default;
}
$code = ifset("number","0");

print<<<EOF
  <FORM METHOD="post">
    <INPUT SIZE="10" TYPE="text" NAME="code"><BR>
    <INPUT TYPE="file" NAME="image_oid"><BR>

    <INPUT TYPE="submit" NAME="write" VALUE="書込実行"><BR>
    <INPUT TYPE="submit" NAME="logout" VALUE="ログアウト"><BR><HR>
  </FORM>
EOF;
?>





PHP-users メーリングリストの案内