Zebramoose Posted February 10, 2011 Share Posted February 10, 2011 Hi! I am building a little PHP/MySQL application where pictures are uploaded and stored in MySQL in a longblob. These are special circumstances and storing images in the database in an absolute must. Uploading is working fine. The upload script inserts the following into the field `image_data`: base64_encode(file_get_contents($_FILES['image']['tmp_name'])) The problem is displaying the images. I cannot for the life of me make it work. I've tried the code on multiple systems with various versions of PHP and MySQL. I have two files: one called view.php and one called show.php. # view.php # It gets $info['id'] from a query getting the ID of the recent-most image uploaded. echo '<img src="show.php?id='.$info['id'].'" alt="" />'; # show.php # $id is determined by $_GET['id'] and passes through security checks I've omitted here. # There is zero (not even a whitespace) output before the header()s are sent. $query = "SELECT `image_data`,`image_mime`,`image_size` FROM `upload`.`files` WHERE `id` = '$id';"; $sql = mysql_query($query) or die(mysql_error()); $image = mysql_fetch_assoc($sql); header('Content-Type: ' . $image['image_mime']); header('Content-Length: ' . $image['image_size']); echo base64_decode($image['image_data']); The problem is that no image is displayed either in view.php or when I call show.php directly with a valid ID. I have verified that $image['image_mime'] and $image['image_size'] contain the right data. However, if I download show.php and change extension to for example .jpg, the image is there. So the image is stored correctly in the database and $image['image_data'] is outputting the right data. I even compared checksums for the image before and after and they're identical, so I would conclude that the error is in the outputting of the image - but I can't figure out what. Error_report is set to E_ALL but there's nothing useful coming out. Any ideas? Quote Link to comment https://forums.phpfreaks.com/topic/227299-getting-image-from-mysql-blob/ Share on other sites More sharing options...
andyhajime Posted February 10, 2011 Share Posted February 10, 2011 <?PHP $FIND = mysql_query("SELECT * FROM imagedata WHERE imagecode = '$DO' && imagemodel = '$WHAT'") or die(mysql_error()); $FOUND = mysql_fetch_array($FIND); header("Content-type: image/".$FOUND['imagemime']); echo $FOUND['imageraw']; ?> This is mine and it's working nicely. Try use the example. Quote Link to comment https://forums.phpfreaks.com/topic/227299-getting-image-from-mysql-blob/#findComment-1172445 Share on other sites More sharing options...
Zebramoose Posted February 11, 2011 Author Share Posted February 11, 2011 Thanks for your reply, but that unfortunately didn't help. I already have the "image/" stored in $image['image_mime']. Quote Link to comment https://forums.phpfreaks.com/topic/227299-getting-image-from-mysql-blob/#findComment-1172606 Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.