File Uploader

A handy utility for uploading files

<?php
# @function upload_file
# 
# @param $field		string		the name of the file upload form field
# @param $dirPath	string		the relative path to which to store the file (no trailing slash)
# @param $maxSize	int			the maximum size of the file (in bytes)
# @param $allowed	array		an array containing all the "allowed" file mime-types
#
# @return mixed		the files' stored path on success, false on failure.
function upload_file($field = '', $dirPath = '', $maxSize = 100000, $allowed = array())
{
	foreach ($_FILES[$field] as $key => $val)
		$$key = $val; 

	if ((!is_uploaded_file($tmp_name)) || ($error != 0) || ($size == 0) || ($size > $maxSize))
		return false;	// file failed basic validation checks

	if ((is_array($allowed)) && (!empty($allowed)))
		if (!in_array($type, $allowed))  
			return false;	// file is not an allowed type

	do $path = $dirPath . DIRECTORY_SEPARATOR . rand(1, 9999) . strtolower(basename($name));
	while (file_exists($path));

	if (move_uploaded_file($tmp_name, $path))
		return $path;

	return false;
}

// DEMO
/*
if (array_key_exists('submit', $_POST))
{
	if ($filepath = upload_file('music_upload', 'music_files', 700000, array('audio/mpeg','audio/wav')))
		echo 'File uploaded to ' . $filepath;
	else
		echo "An error occurred uploading the file... please try again.";
}
echo '	
		<form method="post" action="' .$_SERVER['PHP_SELF']. '" enctype="multipart/form-data">
			<input type="file" name="music_upload" id="music_upload" />
			<input type="submit" name="submit" value="submit" />
		</form>
	';
	
print_r($_FILES); 	// for debug purposes
*/	

?>

Usage

*Note: I -am- the original author of this code as it is seen on php.net

Refer to the commented section of code under the function labeled DEMO for usage.


Comments

Add your comment