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:

Previous
From: Jesus Aneiros
Date:
Subject: Re: Removing all instances of "NOT NULL" from an entire directory of files
Next
From: "Oliver Elphick"
Date:
Subject: Re: Don't know where to begin