Upload Function
Uploading a file using PHP is not a single step function. To make this easier, I have created a function that will upload a file with just one function call. Just upload('image'); and the file is uploaded! upload() is a function that makes uploading files very easy.
Features
- This function will automatically generate a new file name so that files are not overwritten
- Error Handling
- File type validation based on extension
Documentation
Arguments
- $file_id
- The name of the input field containing the file.
- $folder
- OPTIONAL - The folder to which the file should be uploaded to - it must be writable.
- $types
- OPTIONAL - A list of comma(,) separated extensions that can be uploaded. If it is empty, anything goes
Returns
This is somewhat complicated - this function returns an array with two values...
- The first element is randomly generated filename to which the file was uploaded to. This will be empty if there is an error while uploading
- The second element is the status - if the upload failed, it will be 'Error : Cannot upload the file 'name.txt'.' or something like that. This will be empty if the upload was a success.
Code
<?php
/**
* A function for easily uploading files. This function will automatically generate a new
* file name so that files are not overwritten.
* Taken From: http://www.bin-co.com/php/scripts/upload_function/
* Arguments: $file_id- The name of the input field contianing the file.
* $folder - The folder to which the file should be uploaded to - it must be writable. OPTIONAL
* $types - A list of comma(,) seperated extensions that can be uploaded. If it is empty, anything goes OPTIONAL
* Returns : This is somewhat complicated - this function returns an array with two values...
* The first element is randomly generated filename to which the file was uploaded to.
* The second element is the status - if the upload failed, it will be 'Error : Cannot upload the file 'name.txt'.' or something like that
*/
function upload($file_id, $folder="", $types="") {
if(!$_FILES[$file_id]['name']) return array('','No file specified');
$file_title = $_FILES[$file_id]['name'];
//Get file extension
$ext_arr = split("\.",basename($file_title));
$ext = strtolower($ext_arr[count($ext_arr)-1]); //Get the last extension
//Not really uniqe - but for all practical reasons, it is
$uniqer = substr(md5(uniqid(rand(),1)),0,5);
$file_name = $uniqer . '_' . $file_title;//Get Unique Name
$all_types = explode(",",strtolower($types));
if($types) {
if(in_array($ext,$all_types));
else {
$result = "'".$_FILES[$file_id]['name']."' is not a valid file."; //Show error if any.
return array('',$result);
}
}
//Where the file must be uploaded to
if($folder) $folder .= '/';//Add a '/' at the end of the folder
$uploadfile = $folder . $file_name;
$result = '';
//Move the file from the stored location to the new location
if (!move_uploaded_file($_FILES[$file_id]['tmp_name'], $uploadfile)) {
$result = "Cannot upload the file '".$_FILES[$file_id]['name']."'"; //Show error if any.
if(!file_exists($folder)) {
$result .= " : Folder don't exist.";
} elseif(!is_writable($folder)) {
$result .= " : Folder not writable.";
} elseif(!is_writable($uploadfile)) {
$result .= " : File not writable.";
}
$file_name = '';
} else {
if(!$_FILES[$file_id]['size']) { //Check if the file is made
@unlink($uploadfile);//Delete the Empty file
$file_name = '';
$result = "Empty file found - please use a valid file."; //Show the error message
} else {
chmod($uploadfile,0777);//Make it universally writable.
}
}
return array($file_name,$result);
}
Sample
PHP Part
if($_FILES['image']['name']) {
list($file,$error) = upload('image','uploads/','jpeg,gif,png');
if($error) print $error;
}
HTML Part
<form action="" method="post" enctype="multipart/form-data">
<input type="file" name="image" /><input type="submit" value="Upload" name="action" />
</form>

Comments
thanks
or we must create database after that we can use this function..
i'm using xampp(phpMyAdmin) for the database...
can you anyone tell me step by step how to do...
PHP already has upload capability - my function just make is a lot more easier.
<?php
list($file,$error) = upload('image','','jpeg,gif,png');
?>
<img src="<?=$file?>" />
If the files come in as an array, how can I specify specific variables from the array for use with the function?
Any idea what could be wrong?
I did some extra testing. On my desktop, It wasn't working, but on my portable it is working just fine both on IE and Firefox. I'll ckeck my desktop again and try to clean the temporary file and so.
Anyway since your function is far better written than what I wrote in a hurry, I'll replace my code by yours. Thanks a lot.
a, strong, em, b, i, code, pre, pandbrallowed. Other tags will be shown as code(< will become <). Urls, Line breaks will be auto-formated.