SAVE AND RESTORE FILES TO POSTGRESQL (PHP CLASS)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]



<?php

function addImage($conn,$filename)
{
 // 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,$filesize)
{
   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,$filesize);
   $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,$filetosave);
$id_Desc = $filetosave;
$fsize=filesize("HPIM0551.JPG");
$sql = "INSERT INTO images(name,value,filesize) 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(Cell($res,0),$dir.Cell($res,1),Cell($res,2));
}
}




[Index of Archives]     [Postgresql General]     [Postgresql Admin]     [PHP Users]     [PHP Home]     [PHP on Windows]     [Kernel Newbies]     [PHP Classes]     [PHP Databases]     [Yosemite Backpacking]     [Postgresql Jobs]

  Powered by Linux