Home > Archive > PHP with PostgreSQL > December 2005 > SAVE AND RESTORE FILES TO POSTGRESQL (PHP CLASS)









You are viewing an archived Text-only version of the thread. To view this thread in it's original format and/or if you want to reply to this thread please [click here]

 

Author SAVE AND RESTORE FILES TO POSTGRESQL (PHP CLASS)
ivan valadares

2005-12-31, 3:23 am

<?php

function addImage($conn,$file
name)
{
// Open and read the file that was uploaded
$fp = fopen($filename, "r");
if($fp == false)
echo "Error opening file";
// Begin a PostgreSQL transaction
pg_exec("begin");

// create the large object and get the lo id
$lo_id = pg_locreate();

// have postgresql open the large object for writing
$lo_fp = pg_loopen($lo_id, "w");

// for ever 8192 bytes of the uploaded file
while($nbytes = fread($fp, 8192)) {

// write to the large object
$tmp = pg_lowrite($lo_fp, $nbytes);

// handle possible error
if($tmp < $nbytes) {
echo "error while writing large object";
}

}

// close the large object
pg_loclose($lo_fp);

// commit the postgresql transaction
pg_exec("commit");

// close the uploaded file
fclose($fp);


if (!is_int($lo_id)) {
// return false
return false;
}

if (is_int($lo_id)) {
// return large object id
return $lo_id;
}

}

function ReadImage($lo_id,$fi
lesize)
{
pg_exec("begin");

$handle = pg_lo_open($lo_id,"r");
$data = pg_lo_read($handle,$
filesize);
// pg_lo_close($lo_fp);


//pg_exec($conn,"commit");
return $data;
}

function WriteImageToFile($id
,$filename,$filesize
)
{
$data = ReadImage($id,$files
ize);
$f = fopen($filename,"w");
if(fwrite($f,$data) == FALSE)
{
$message ="ERROR";//getTokenValue("CANT_WRITE_FILE",$lang)."
dbresource.txt";
}
fclose($f);
}
?>




-------- Database ----------------

CREATE TABLE images (
name text,
image oid,
filesize bigint
);


---------- File to Database Exemple ------------
include("image.php");
$filetosave="HPIM0551.JPG" // file to save in the database
$loId = addImage($conn,$file
tosave);
$id_Desc = $filetosave;
$fsize=filesize("HPIM0551.JPG");
$sql = "INSERT INTO images(name,value,fi
lesize)
VALUES('$id_Desc','$
loId','$fsize')";
pg_query($sql);



-------- Database to Files Exemple ------------
include("image.php");
$sql = "Select value,name,filesize FROM images";
$res = Query($conn,$sql);
$dir = "C:\\images\\"; // directory
while(Fetch($res))
{
if (Cell($res,2))
{
WriteImageToFile(Cel
l($res,0),$dir. Cell($res,1),Cell($r
es,2));
}
}



---------------------------(end of broadcast)---------------------------
TIP 6: explain analyze is your friend

Sponsored Links





Also available: Server administration forum archive | Web Design forum archive | Software forum archive | Hardware reviews archive | Programming forum archive

Copyright 2008 droptable.com