Jump to content

Storing then displaying image from database


krabople

Recommended Posts

Hi, wondering if somebody can tell me where I'm going wrong (I'm new to all of this). I have the following php code which uploads an image file into my database:

 

 

    //Connect to database
    include 'Resources/Include/db.inc.php';

    $tmp=$_FILES['image']['tmp_name'];
    //get users IP
    $ip=$_SERVER['REMOTE_ADDR'];

    //Don't do anything if file wasn't selected
    if (!empty($tmp)) {

    //Copy file to temporary folder
    copy($tmp, "./temporary/".$ip."");

    //open the copied image, ready to encode into text to go into the database
    $filename1 = "./temporary/".$ip;
    $fp1 = fopen($filename1, "rb");

    //record the image contents into a variable
    $contents1 = fread($fp1, filesize($filename1));

    $contents1 = addslashes($contents1);

    //close the file
    fclose($fp1);

    $ftype = $_FILES['image']['type'];

    //insert information into the database
    if(!mysql_query("INSERT INTO LetterImages (Data,Type,LetterID,Page)"." VALUES ( '$contents1', '$ftype',1,1)")){
    echo mysql_error();
    }

    //delete the temporary file we made
    unlink($filename1);

    }

 

 

This seems to work ok, as when I go to the LetterImages table there is now an additional row with a file in the blob field. I then have the following code which is supposed to display the image:

 

 

    $result=mysql_query("SELECT * FROM LetterImages WHERE LetterID=1 AND Page=1");

    //fetch data from database
    $sqldata=mysql_fetch_array($result);

    $encoded=stripslashes($sqldata['Data']);
    $ftype=$sqldata['Type'];

    //tell the browser what type of image to display
    header("Content-type: $ftype");

    //decode and echo the image data
    echo $encoded;

 

 

Instead of displaying an image, however, this just displays pages and pages of incomprehensible data. Can anybody tell me where I'm going horribly wrong?

Basically because I'm new to this and it seemed initially like the easiest option. I also think it's got to be better for referential integrity. If I can't get it to work like this, I'll probably look at doing it using a file system but as I've already developed this script it would be easier for the time being to amend it so that it works (although I have been trying to fix all day without success!).

Archived

This topic is now archived and is closed to further replies.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.