How to upload and validate a image in php
In this tutorial I will explain how to upload a image and how to validate image extension
Create an HTML form with two text field :
- One is for Image title with input type text.
- Second one is for upload image with input type file.For file upload input must be file(type=”file”). This input type show the file select control.
HTML form must have following attributes :
- method=”post”
- enctype=”multipart/form-data” (The enctype attribute specifies how the form-data should be encoded when submitting it to the server.)
without these attributes , the image upload will not work.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
<form name="uploadimage" enctype="multipart/form-data" method="post"> <table width="100%" border="0"> <tr> <th width="26%" height="60" scope="row">Image Title:</th> <td width="74%"><input type="text" name="imagetitle" autocomplete="off" class="form-control" required /></td> </tr> <tr> <th height="60" scope="row">Upload Image :</th> <td><input type="file" name="image" required /></td> </tr> <tr> <th height="60" scope="row"> </th> <td><input type="submit" value="Submit" name="submit" class="btn-primary" /></td> </tr> </table> </form> |
Create a database with name imagesdata. Inside this database we create a table with name tblimages.
SQL Script for tblimages—
1 2 3 4 5 6 |
CREATE TABLE IF NOT EXISTS `tblimages` ( `id` int(11) NOT NULL, `ImagesTitle` varchar(120) DEFAULT NULL, `Image` varchar(150) DEFAULT NULL, `PostingDate` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=latin1; |
Now create a database connection file(config.php)
1 2 3 4 5 6 7 8 9 10 11 12 |
<?php define('DB_SERVER','localhost'); define('DB_USER','root'); define('DB_PASS' ,''); define('DB_NAME', 'imagesdata'); $con = mysqli_connect(DB_SERVER,DB_USER,DB_PASS,DB_NAME); // Check connection if (mysqli_connect_errno()) { echo "Failed to connect to MySQL: " . mysqli_connect_error(); } ?> |
PHP Script for getting posted values, image validation, move images into directory and insertion data into database
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
<?php include_once("config.php"); if(isset($_POST['submit'])) { // Posted Values $imgtitle=$_POST['imagetitle']; $imgfile=$_FILES["image"]["name"]; // get the image extension $extension = substr($imgfile,strlen($imgfile)-4,strlen($imgfile)); // allowed extensions $allowed_extensions = array(".jpg","jpeg",".png",".gif"); // Validation for allowed extensions .in_array() function searches an array for a specific value. if(!in_array($extension,$allowed_extensions)) { echo "<script>alert('Invalid format. Only jpg / jpeg/ png /gif format allowed');</script>"; } else { //rename the image file $imgnewfile=md5($imgfile).$extension; // Code for move image into directory move_uploaded_file($_FILES["image"]["tmp_name"],"uploadeddata/".$imgnewfile); // Query for insertion data into database $query=mysqli_query($con,"insert into tblimages(ImagesTitle,Image) values('$imgtitle','$imgnewfile')"); if($query) { echo "<script>alert('Data inserted successfully');</script>"; } else { echo "<script>alert('Data not inserted');</script>"; }} } ?> |
How to run this script
- Download the zip
- Extract zip file and put in the root directory
- open phpmyadmin. Create a db imagesdata then import SQL file(given inside the package)