here is some step to validate image upload using php, and save file info into database.
Create database: “db_images”
Create table “img_table” on database “db_images”
CREATE TABLE IF NOT EXISTS `img_table` ( `id` int(11) NOT NULL AUTO_INCREMENT, `filename` varchar(255) NOT NULL, `filesize` int(11) NOT NULL, `location` varchar(255) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=8 ;
connect.php
<?php
$host = "localhost";
$user = "root";
$pass = "root";
$dbName = "db_images";
mysql_connect($host, $user, $pass);
mysql_select_db($dbName)
or die ("Connect Failed !! : ".mysql_error());
?>
index.php
<form enctype="multipart/form-data" action="validate_image_upload.php" method="POST"> <!-- MAX_FILE_SIZE must be set before the input element --> <input type="hidden" name="MAX_FILE_SIZE" value="2048000" /> <!-- The name from the $_FILES array is determined by the input name --> Select an Image: <input name="image_file" type="file" /> <input type="submit" value="Upload" /> </form>
validate_image_upload.php
<?php
include "connect.php";
// Do not show notice errors
error_reporting (E_ALL ^ E_NOTICE);
if(!empty($_FILES)){ // Has the image been uploaded?
/*
1 = Check if the file uploaded is actually an image no matter what extension it has
2 = The uploaded files must have a specific image extension
*/
$validation_type = 1;
if($validation_type == 1){
$mime = array('image/gif' => 'gif',
'image/jpeg' => 'jpeg',
'image/png' => 'png',
'application/x-shockwave-flash' => 'swf',
'image/psd' => 'psd',
'image/bmp' => 'bmp',
'image/tiff' => 'tiff',
'image/tiff' => 'tiff',
'image/jp2' => 'jp2',
'image/iff' => 'iff',
'image/vnd.wap.wbmp' => 'bmp',
'image/xbm' => 'xbm',
'image/vnd.microsoft.icon' => 'ico');
}
else if($validation_type == 2){ // Second choice? Set the extensions
$image_extensions_allowed = array('jpg', 'jpeg', 'png', 'gif','bmp');
}
$upload_image_to_folder = 'images/';
$file = $_FILES['image_file'];
$fileSize = $_FILES['image_file']['size']; //get the file size
$file_name = $file['name'];
$error = ''; // Empty
// Get File Extension (if any)
$ext = strtolower(substr(strrchr($file_name, "."), 1));
// Check for a correct extension. The image file hasn't an extension? Add one
if($validation_type == 1){
$file_info = getimagesize($_FILES['image_file']['tmp_name']);
if(empty($file_info)){ // No Image?
$error .= "The uploaded file doesn't seem to be an image.";}
else{ // An Image?
$file_mime = $file_info['mime'];
if($ext == 'jpc' || $ext == 'jpx' || $ext == 'jb2'){
$extension = $ext;
}
else{
$extension = ($mime[$file_mime] == 'jpeg') ? 'jpg' : $mime[$file_mime];
}
if(!$extension){
$extension = '';
$file_name = str_replace('.', '', $file_name);
}
}
}
else if($validation_type == 2){
if(!in_array($ext, $image_extensions_allowed)){
$exts = implode(', ',$image_extensions_allowed);
$error .= "You must upload a file with one of the following extensions: ".$exts;
}
$extension = $ext;
}
if($error == ""){ // No errors were found?
$new_file_name = strtolower($file_name);
$new_file_name = str_replace(' ', '-', $new_file_name);
$new_file_name = substr($new_file_name, 0, -strlen($ext));
$new_file_name .= $extension;
// File Name
$move_file = move_uploaded_file($file['tmp_name'], $upload_image_to_folder.$new_file_name);
if($move_file){
$query = "INSERT into img_table VALUES('','$file_name','$fileSize','images/$file_name')"; //insert image property to database
$result= mysql_query($query);
$done = 'The image has been uploaded.';
}
}
else{
@unlink($file['tmp_name']);
}
$file_uploaded = true;
}
if($file_uploaded) {
if($done){ echo '<font color="green">'.$done.'</font>'; }
else if($error){echo '<font color="red">'.$error.'</font>'; }
echo '<br /><br />';
}
?>