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?

Link to comment
Share on other sites

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!).

Link to comment
Share on other sites

This thread is more than a year old. Please don't revive it unless you have something important to add.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • 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.