$pdo = new PDO('mysql:dbname=database_name;host=localhost', 'username', 'password',
array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8'));
$imageName = mysql_real_escape_string($_FILES["image"]["name"]);
$imageData = file_get_contents($_FILES["image"]["tmp_name"]);
$imageType = mysql_real_escape_string($_FILES["image"]["type"]);
$stmt = $pdo->prepare('INSERT INTO image (name,image) VALUES (:name,:image)');
$stmt->bindParam(':image', $imageData, PDO::PARAM_LOB);
$stmt->bindParam(':name', $imageName);
$stmt->execute(array('name' => $imageName, 'image' => $imageData));
echo "Image Uploaded";
$res = mysql_query("SELECT * FROM image ");
while ($row = mysql_fetch_assoc($res))
{
echo "<img src=data:image/jpeg;base64," . (base64_encode(($row['image']))) . " style='width:60px;height:60px;'>";
}
Question
I'm having problem with showing image which is stored in database as a blob. I searched in many forums, but couldn't find any answer.
I separated the code into two files. In index.php i insert image and try to load it from get_image.php file.
Here is index.php
<form action="index.php" method="POST" enctype="multipart/form-data">
File:
<input type="file" name="image"> <input type="submit" value="upload">
</form>
<?php
$file = $_FILES['image']['tmp_name'];
if(!isset($file)){
echo "Please select an image.";
}
else{
$image_name = mysql_real_escape_string($_FILES['image']['name']);
$image = mysql_real_escape_string(file_get_contents($_FILES['image']['tmp_name']));
$imageType = mysql_real_escape_string($_FILES['image']['type']);
$image_size = getimagesize($_FILES['image']['tmp_name']);
if($image_size == FALSE){
echo "That's not an image";
}
else{
if (!$insert = mysql_query("UPDATE 'table_name' SET `image` = '$image' WHERE 'row_name' = '$student_id'")){
echo "Problem updating image";
}
else{
echo "<img src=get_image.php>";
}
}
}
?>
And get_image.php
<?php
$query = mysql_query("SELECT image FROM table_name WHERE student_id = 51686");
while($row= mysql_fetch_assoc($query)){
$imageData = $row['image'];
}
header("Content-type: image/png");
echo $imageData;
?>
Can anyone help please. My php version is 5.2 At the output there is image icon, but no image. If I right click and try to save it as image, it's not an image format, it's saved as get_image.php. So I don't know what is the problem.
Solution 2
OTHER TIPS
please try to insert record like this below
$tmpImageName=$_FILES['files']['tmp_name'];
$handle = fopen( $tmpImageName, 'r' );
$content = fread( $handle, filesize( $tmpImageName ) );
fclose($handle);
$sql='insert into imagetest(image)values("'.mysql_escape_string($content).'")';
mysql_query($sql) or die(mysql_error());
and then try to display image like here
$res = mysql_query("SELECT * FROM imagetest");
while ($row = mysql_fetch_assoc($res)) {
echo "<img src=data:image/jpeg;base64," . (base64_encode(($row['image']))) . " >";
}
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow