View Full Version : upload image

02-11-2010, 09:16 PM
i use this script for uploading image in mysql db

$db_host = 'localhost'; // don't forget to change
$db_user = 'username';
$db_pwd = 'password';

$database = 'vargasfa_fake';
$table = 'ae_gallery';
// use the same name as SQL table

$password = 'satan159E';
// simple upload restriction,
// to disallow uploading to everyone

if (!mysql_connect($db_host, $db_user, $db_pwd))
die("Can't connect to database");

if (!mysql_select_db($database))
die("Can't select database");

// This function makes usage of
// $_GET, $_POST, etc... variables
// completly safe in SQL queries
function sql_safe($s)
if (get_magic_quotes_gpc())
$s = stripslashes($s);

return mysql_real_escape_string($s);

// If user pressed submit in one of the forms
// cleaning title field
$title = trim(sql_safe($_POST['title']));

if ($title == '') // if title is not set
$title = '(empty title)';// use (empty title) string

if ($_POST['password'] != $password) // cheking passwors
$msg = 'Error: wrong upload password';
if (isset($_FILES['photo']))
@list(, , $imtype, ) = getimagesize($_FILES['photo']['tmp_name']);
// Get image type.
// We use @ to omit errors

if ($imtype == 3) // cheking image type
$ext="png"; // to use it later in HTTP headers
elseif ($imtype == 2)
elseif ($imtype == 1)
$msg = 'Error: unknown file format';

if (!isset($msg)) // If there was no error
$data = file_get_contents($_FILES['photo']['tmp_name']);
$data = mysql_real_escape_string($data);
// Preparing data to be used in MySQL query

mysql_query("INSERT INTO {$table}
SET ext='$ext', title='$title',

$msg = 'Success: image uploaded';
elseif (isset($_GET['title'])) // isset(..title) needed
$msg = 'Error: file not loaded';// to make sure we've using
// upload form, not form
// for deletion

if (isset($_POST['del'])) // If used selected some photo to delete
{ // in 'uploaded images form';
$id = intval($_POST['del']);
mysql_query("DELETE FROM {$table} WHERE id=$id");
$msg = 'Photo deleted';
elseif (isset($_GET['show']))
$id = intval($_GET['show']);

$result = mysql_query("SELECT ext, UNIX_TIMESTAMP(image_time), data
FROM {$table}
WHERE id=$id LIMIT 1");

if (mysql_num_rows($result) == 0)
die('no image');

list($ext, $image_time, $data) = mysql_fetch_row($result);

$send_304 = false;
if (php_sapi_name() == 'apache') {
// if our web server is apache
// we get check HTTP
// If-Modified-Since header
// and do not send image
// if there is a cached version

$ar = apache_request_headers();
if (isset($ar['If-Modified-Since']) && // If-Modified-Since should exists
($ar['If-Modified-Since'] != '') && // not empty
(strtotime($ar['If-Modified-Since']) >= $image_time)) // and grater than
$send_304 = true; // image_time

if ($send_304)
// Sending 304 response to browser
// "Browser, your cached version of image is OK
// we're not sending anything new to you"
header('Last-Modified: '.gmdate('D, d M Y H:i:s', $ts).' GMT', true, 304);

exit(); // bye-bye

// outputing Last-Modified header
header('Last-Modified: '.gmdate('D, d M Y H:i:s', $image_time).' GMT',
true, 200);

// Set expiration time +1 year
// We do not have any photo re-uploading
// so, browser may cache this photo for quite a long time
header('Expires: '.gmdate('D, d M Y H:i:s', $image_time + 86400*365).' GMT',
true, 200);

// outputing HTTP headers
header('Content-Length: '.strlen($data));
header("Content-type: image/{$ext}");

// outputing image
echo $data;
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3c.org/TR/1999/REC-html401-19991224/loose.dtd">

<title><? echo _SITE_NAME; ?> :: Admin Panel :: Home</title>
<meta http-equiv=Content-Type content="text/html; charset=utf-8">
<link href="css/style_<? echo _CSS_STYLE;?>.css" type=text/css rel=stylesheet>

<body style="background: #ffffff;">

<h4>Statistics -> Statistics</h4>
<hr style="color:#cccccc">

<br />
<br />
<title>MySQL Blob Image Gallery Example</title>
if (isset($msg)) // this is special section for
// outputing message
<p style="font-weight: bold;"><?=$msg?>
<a href="<?=$PHP_SELF?>">reload page</a>
<!-- I've added reloading link, because
refreshing POST queries is not good idea -->
<h1>Blob image gallery</h1>
<h2>Uploaded images:</h2>
<form action="<?=$PHP_SELF?>" method="post">
<!-- This form is used for image deletion -->

$result = mysql_query("SELECT id, image_time, title FROM {$table} ORDER BY id DESC");
if (mysql_num_rows($result) == 0) // table is empty
echo '<ul><li>No images loaded</li></ul>';
echo '<ul>';
while(list($id, $image_time, $title) = mysql_fetch_row($result))
// outputing list
echo "<li><input type='radio' name='del' value='{$id}'>";
echo "<a href='{$PHP_SELF}?show={$id}'>{$title}</a> &ndash; ";
echo "<small>{$image_time}</small></li>";

echo '</ul>';

echo '<label for="password">Password:</label><br>';
echo '<input type="password" name="password" id="password"><br><br>';

echo '<input type="submit" value="Delete selected">';

<h2>Upload new image:</h2>
<form action="<?=$PHP_SELF?>" method="POST" enctype="multipart/form-data">
<label for="title">Title:</label><br>
<input type="text" name="title" id="title" size="64"><br><br>

<label for="photo">Photo:</label><br>
<input type="file" name="photo" id="photo"><br><br>

<label for="password">Password:</label><br>
<input type="password" name="password" id="password"><br><br>

<input type="submit" value="upload">


and here is my db
CREATE TABLE `ae_gallery` (
`title` varchar(64) character SET utf8 NOT NULL,
`ext` varchar(8) character SET utf8 NOT NULL,
`data` mediumblob NOT NULL,

now i want that i upload image and all image show on other page, like gallery
please tell me what i do

02-11-2010, 10:20 PM
Is your question "How do I pull data out of my MySQL table and display it on a browser?" If it is, try google; I used "how to display mysql data" and got several promising links.