IT.COM

Upload Image to Mysql Database with PHP

Spaceship Spaceship
Watch
Hi, this is my first tutorial. I have tested it and it all works great.
It should work with any type of image.

Today, err.. class, were going to make an image >> database uploader.

Requirements:
-Basic knowledge of php and mysql.
-Access to a mysql database.

First of all, create a table (and a database if necessary):

CREATE TABLE `images` (
`img` INT NOT NULL AUTO_INCREMENT ,
`data` LONGTEXT NOT NULL ,
PRIMARY KEY ( `img` )
);

Secondly, create a directory called "temporary" and chmod it to 777.

Ok, now that you have made the table and directory lets get to the coding.
This script will consist of 2 pages, "upload.php" and "image.php".

First page, "upload.php":

PHP:
<?php
//connect to database. Username and password need to be changed
mysql_connect("localhost", "username", "password");

//Select database, database_name needs to be changed
mysql_select_db("database_name");

if (!$_POST['uploaded']){
//If nothing has been uploaded display the form
?>

<form action="<? echo $_SERVER['PHP_SELF']; ?>" method="post" 
ENCTYPE="multipart/form-data">
Upload:<br><br>
<input type="file" name="image"><br><br>
<input type="hidden" name="uploaded" value="1">
<input type="submit" value="Upload">
</form>

<?
}else{
//if the form hasn't been submitted then:

//from here onwards, we are copying the file to the directory you made earlier, so it can then be moved 
//into the database. The image is named after the persons IP address until it gets moved into the database

//get users IP
$ip=$REMOTE_ADDR;

//don't continue if an image hasn't been uploaded
if (!empty($image)){

//copy the image to directory
copy($image, "./temporary/".$ip."");

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

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

//close the file
fclose($fp1);

//encode the image into text
$encoded = chunk_split(base64_encode($contents1)); 

//insert information into the database
mysql_query("INSERT INTO images (img,data)"."VALUES ('NULL', '$encoded')");

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

//end
}
?>


Now thats the upload script complete, how do we view the images?

Second Page, "image.php":

PHP:
<?php
//connect to database. Username and password need to be changed
$connection=mysql_connect("localhost", "username", "password");

//Select database, database_name needs to be changed
mysql_select_db("database_name");

//get decoded image data from database
$result=mysql_query("SELECT * FROM images WHERE img='".$_GET['img']."'");

//fetch data from database
$data=mysql_fetch_array($result);
$encoded=$data['data'];

//note: "$data['data']" is the row "data" in the table we made.
//The image ID would be "$data['img']" for example


//close connection
mysql_close($connection);

//decode and echo the image data
echo base64_decode($encoded);

//end
?>


Now, test it. To view the images you upload go to:
http://www.yourdomain.com/image.php?img=1
http://www.yourdomain.com/image.php?img=2
http://www.yourdomain.com/image.php?img=3

and so on...

My first tutorial, tell me what you think. Did you find it hard to understand any parts?
 
Last edited:
0
•••
The views expressed on this page by users and staff are their own, not those of NamePros.
nice tutorial, I might try it later.. Thanks! :tu:
 
0
•••
great tutorial...whens it gonna be a full script;)
 
0
•••
excellent work! I'll try it soon
 
0
•••
  • The sidebar remains visible by scrolling at a speed relative to the page’s height.
Back