Fwd: Re: inserting a file into a database. - Mailing list pgsql-novice
From | claus@virtualhost.dk |
---|---|
Subject | Fwd: Re: inserting a file into a database. |
Date | |
Msg-id | 200009121159.e8CBxhJ07383@hub.org Whole thread Raw |
List | pgsql-novice |
uhu! Min f�rste posting til pgsql mailing listen for amat�rer ;-) Claus Forwarded Message: > To: Christopher Smith <csmith@gio.com.au> > From: Claus =?iso-8859-1?Q?Houm=F8ller?= <claus@virtualhost.dk> > Subject: Re: [NOVICE] inserting a file into a database. > Date: Tue, 12 Sep 2000 02:30:01 +0200 > ----- > > Hi, > > You can use the pg_lo* functions in php4 (I think these functions are > implemented using libpq, and therefore there are no problems with > permissions). First you have to open your file for reading, then create > a large object id, create a large object file pointer (for writing), > write data to the object fp, and finaly do an 'insert' with the given > oid. All this has to be done in a single pgsql transaction, like: > > .... > $fp = fopen("/tmp/ferrari.jpg", "r"); > pg_exec($db_conn, "begin"); > $loid = pg_locreate($db_conn); > $lofp = pg_loopen($db_conn, $loid, "w"); > while( $nbytes = fread($fp, BUFSIZE) ) > { > $tmp = pg_lowrite($lofp, $nbytes); > if( $tmp < $nbytes ) > echo "error while writing large object"; > } > pg_exec($db_conn, "insert into car values(nextval('car_id_seq'), " . > $loid . ")"; > pg_loclose($lofp); > pg_exec($db_conn, "commit"); > fclose($fp); > .... > > ....that works for me.. > > regards, > > Claus Houm�ller > > Christopher Smith wrote: > > > > Hi all, > > > > I'm trying to insert a file into a database from a php form. Here's my sql > > statement.. > > > > $sql="insert into scripts (id, submittedby, description, script, scriptfile) > > values (nextval('scripts_id_seq'), '$loginname', '$description', '$script', > > lo_import('$userfile'))"; > > > > Here's the error I get.. > > > > Warning: PostgresSQL query failed: ERROR: You must have Postgres superuser > > privilege to use server-side lo_import(). Anyone can use the client-side > > lo_import() provided by libpq. in put-file.php on line 4 > > > > OK, I understand the error, no problems. How do I fix it? How do I get around > > it? Anyone have a better solution for the sql statement? I don't want to use > > libpq, I wanted to be able to do it with php. My webserver runs as "wwwrun", my > > postgres superuser is "postgres". > > > > Here's my permission table.. > > > > xxxx=# \z > > Access permissions for database "xxxx" > > Relation | Access permissions > > ------------------+--------------------- > > scripts | {"=","wwwrun=arwR"} > > scripts_id_seq | {"=","wwwrun=arwR"} > > > > If anyone has some suggestions, please let me know. > > > > Thanks, > > Chris. > > > > This email message and any accompanying attachments may contain information that > > is confidential and subject to legal privilege. If you are not the intended > > recipient, do not read, use, disseminate, distribute or copy this message or > > attachments. If you have received this message in error, please notify the > > sender immediately and delete this message. Any views expressed in this message > > are those of the individual sender, except where the sender expressly, and with > > authority, states them to be the views of AMP/GIO. Before opening any > > attachments, please check them for viruses and defects. >
pgsql-novice by date: