Re: Storing jpgs - Mailing list pgsql-general

From Gavin M. Roy
Subject Re: Storing jpgs
Date
Msg-id 4072DD6C.8090708@ehpg.net
Whole thread Raw
In response to Re: Storing jpgs  (Joe Lester <joe_lester@sweetwater.com>)
List pgsql-general
What language?  Here's a quick example in php that expects a HTML Form
that has a input type=file name=userfile:

<?php

  // assumes pg_Connect has been called and the connection is $conn

  // check to make sure it's an uploaded file
  |if (is_uploaded_file(|$_FILES['userfile']['tmp_name']|))
 {
    // Get Image Information for JPEG Validation
    $imgInfo = getimagesize(|$_FILES['userfile']['tmp_name']);

    // Make sure it's a JPEG before moving on
    if ( $imgInfo[2] == 2 )
    {
      |// Read the file in to a variable
      $fp = fopen(|$_FILES['userfile']['tmp_name']|, "rb");
      $textData = base64_encode(fread($fp,
filesize(|$_FILES['userfile']['tmp_name'])));
      fclose($fp);

      /* Insert into into a table called media with the following schema:
      filename varchar(30) not null primary key
      mimetype varchar(30) not null default 'image/jpeg'
      filedata text
      */
      pg_Query($conn, "INSERT INTO media VALUES('" .
$_FILES['userfile']['name'] . "','image/jpeg', '$textData');
    } else {
      echo "Uploaded file isn't a valid JPEG.\n";
    }
  } else {
    echo "Invalid file upload.\n";
  }
 }
|
?>
|
And to send it:

<?php
  // assumes a GET variable called image
(http://yoursite.com/displayImage.php?image=picture.jpg and
  // pg_Connect already called with $conn as connection

  $result = pg_Query($conn, "SELECT mimetype, filedata FROM media WHERE
filename = '" . $_GET['image'] . "';");
  if ( pg_NumRows($result) > 0 )
  {
     $data = pg_Fetch_Object($result, 0);
     Header("Content-type: $data->mimetype");
     echo base64_decode($data->filedata);
     exit();
  } else {
     echo "404: File Not Found.";
  }
?>

Hope this helps, I've not tested it but it should work ok and at best it
illustrates the principles.

Gavin


Joe Lester wrote:

> Would anyone have some example code they could share using libpq to
> encode an image into a text field? Right now, I'm converting my image
> into a hexadecimal string representation in my SQL statement. I'm sure
> there must be a better (faster) way. The hex encodeing/decoding slows
> things down for me since my app deals with a lot of images.
>
> On Apr 5, 2004, at 2:03 PM, Gavin M. Roy wrote:
>
>> I'm one for using base64 encoded text in a text field.  It's easy to
>> deal with queries, it's easy to deal with spitting out images, and
>> it's easy to back up.  Others do it differently, there are many ways
>> to skin a cat, and each person who skins cats most likely thinks
>> their way is best.
>> Gavin
>>
>> C G wrote:
>>
>>> Dear All,
>>>
>>> What's the best way to store jpgs in postgresql to use in a web page?
>>
>
>


pgsql-general by date:

Previous
From: Richard Huxton
Date:
Subject: Re: Error on deleting
Next
From: Richard Huxton
Date:
Subject: Re: Creating a trigger function