Link to a file stored in a database (PostgreSQL)
am 27.05.2002 12:30:41 von matlab21
Hi:
I want store files in PostgreSQL and retrieve it
without put files in a temp directory.
For example, PHP can create image files with:
header("Content-type: image/gif");
and call this file image.php ... each time somebody
calls this file, PHP must create the image.
I need do the same but with a file stored in a
database.
For example, I want store a PDF file in a database and
could get it with a link.
Thanks a lot.
Xevi.
____________________________________________________________ ___
Copa del Mundo de la FIFA 2002
Disfruta en vĂdeo de los mejores momentos desde tu ordenador.
http://fifaworldcup.yahoo.com/fc/es/
---------------------------(end of broadcast)---------------------------
TIP 3: if posting/reading through Usenet, please send an appropriate
subscribe-nomail command to majordomo@postgresql.org so that your
message can get through to the mailing list cleanly
Re: Link to a file stored in a database (PostgreSQL)
am 27.05.2002 12:54:59 von Andrew McMillan
On Mon, 2002-05-27 at 22:30, re ert wrote:
> Hi:
>
> I want store files in PostgreSQL and retrieve it
> without put files in a temp directory.
>
> For example, PHP can create image files with:
>
> header("Content-type: image/gif");
>
> and call this file image.php ... each time somebody
> calls this file, PHP must create the image.
>
> I need do the same but with a file stored in a
> database.
> For example, I want store a PDF file in a database and
> could get it with a link.
I have tried to do this with mixed success, storing the binary files as
a 'large object' within PostgreSQL.
The basic function, as you surmise, is to send the appropriate headers,
get the data out of the database and pump it out to the user. Here's a
fragment from my server:
Header("Content-type: $content_type");
error_log("LO ID is >>$loid<<", 0);
$rid = pg_exec( $img_db, "BEGIN;" );
$fd = pg_loopen( $img_db, intval($loid), "r" );
$fstats = fstat($fd);
error_log("Img bytes should be: " . $fstats[7], 0);
Header("Content-length: $fstats[7]");
pg_loreadall( $fd );
pg_loclose($fd);
$rid = pg_exec( $img_db, "COMMIT;");
The biggest gotcha seemed to be that all LO access needs to occur within
a transaction.
Cheers,
Andrew.
--
------------------------------------------------------------ --------
Andrew @ Catalyst .Net.NZ Ltd, PO Box 11-053, Manners St, Wellington
WEB: http://catalyst.net.nz/ PHYS: Level 2, 150-154 Willis St
DDI: +64(4)916-7201 MOB: +64(21)635-694 OFFICE: +64(4)499-2267
Are you enrolled at http://schoolreunions.co.nz/ yet?
---------------------------(end of broadcast)---------------------------
TIP 1: subscribe and unsubscribe commands go to majordomo@postgresql.org