php tutorial file upload code (supports file batch upload)
This file upload class uploads single files by default. We only need to modify $inputname ='files' to your form name to easily upload batch files. $savename = ''save file name, $alowexts = array() sets the type allowed to upload, $savepath = ''save path.
*/
class upload
{
public $savepath;
public $files;
private $error;function __construct($inputname ='files', $savepath = '', $savename = '', $alowexts = array(),$maxsize = 1024000)
{
if(!$alowexts)$alowexts=explode('|',upload_ftype);
$file_array=array();
$savepath=str_replace('','/',$savepath);
$savename=preg_replace('/[^a-z0-9_]+/i','',$savename);
$this->savepath=substr($savepath,-1)=='/'?$savepath:$savepath.'/'; //The path name ends with /if(!make_dir($this->savepath))
{
$this->error=8;
$this->error();
}
//exit($this->savepath);
if(!is_writeable($this->savepath))
{
$this->error=9;
$this->error();
}
if(sizeof($_files[$inputname]['error'])>10)
{
$this->error=13;
$this->error();
}
$max=sizeof($_files[$inputname]['error'])-1;
//exit($this->savepath.$savename);
foreach($_files[$inputname]['error'] as $key => $error)
{
if($error==upload_err_ok) //Batch upload
{
$savename=$savename?$savename:date('ymdims').mt_rand(10000,99999);
$fileext=strtolower(get_fileext($_files[$inputname]['name'][$key]));
$savename=$savename.'.'.$fileext;
$tmp_name=$_files[$inputname]['tmp_name'][$key];
$filesize=$_files[$inputname]['size'][$key];
If(!in_array($fileext,$alowexts))
{
$this->error=10;
$this->error();
}
If($filesize>$maxsize)
{
$this->error=11;
$this->error();
}
If(!$this->isuploadedfile($tmp_name))
{
$this->error=12;
$this->error();
}if(move_uploaded_file($tmp_name,$this->savepath.$savename) || @copy($tmp_name,$this->savepath.$savename))
{
//exit($this->savepath.$savename);
@chmod($savename, 0644);
@unlink($tmp_name);
$file_array[]=$this->savepath.$savename;
}
}
else
{
$this->error=$error;
$this->error();
}
Unset($savename);
}
$this->files=$file_array;
return true;
}function isuploadedfile($file) //Remove the backslash that comes with the system
{
return (is_uploaded_file($file) || is_uploaded_file(str_replace('','',$file)));
}function error()
{
$upload_error=array(0 => 'File uploaded successfully!',
1 => 'The uploaded file exceeds the limit of the upload_max_filesize option in php.ini!',
2 => 'The size of the uploaded file exceeds the value specified by the max_file_size option in the html form!',
3 => 'Only part of the file was uploaded!',
4 => 'No files uploaded!',
5 => 'Unknown error!',
6 => 'The temporary folder cannot be found. !',
7 => 'Failed to write file to temporary folder!',
'Creation of attachment directory failed!',
9 => 'The attachment directory does not have write permission!',
10 => 'This type of file is not allowed to be uploaded!',
'The file exceeds the administrator's limit!',
12 => 'Illegal file upload!',
13 => 'Up to 10 files can be uploaded at the same time!'
);
showmsg($upload_error[$this->error]);
}}
//How to use
new upload();