<?
/*
- author: Skakunov Alexander [hide@address.com]
- filename: FileUploadHandler.class.php
- date: FuseBoxManager.class.php
- description: FileUploadHandler class is work-around to track errors of file uploads. The work-around is necessary due to different features in PHP versions (see comments below)
*/
class FileUploadHandler
{
public $ok;
protected $var_name;
protected $files_array;
public function FileUploadHandler($var_name, $files_array=array())
{
$this->var_name = trim($var_name);
$this->files_array = (array)(empty($files_array) ? $_FILES : $files_array);
$this->define_const();
$this->ok = ($this->files_array[ $this->var_name ]['error']==UPLOAD_ERR_OK &&
!empty($this->files_array[ $this->var_name ]['tmp_name'])
);
}
public function get_error_text()
{
$arr_errors = array(
'There is no error, the file uploaded with success',
'The uploaded file exceeds the upload_max_filesize directive in php.ini',
'The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form',
'The uploaded file was only partially uploaded',
'No file was uploaded',
'Missing a temporary folder', //Introduced in PHP 4.3.10 and PHP 5.0.3
'Failed to write file to disk', //Introduced in PHP 5.1.0
'File upload stopped by extension' //Introduced in PHP 5.2.0
);
return $arr_errors[ $this->files_array[ $this->var_name ]['error'] ];
}
public function get_file()
{
return $this->files_array[ $this->var_name ]['tmp_name'];
}
private function define_const()
{
$arr_const = array(
UPLOAD_ERR_OK,
UPLOAD_ERR_INI_SIZE,
UPLOAD_ERR_FORM_SIZE,
UPLOAD_ERR_PARTIAL,
UPLOAD_ERR_NO_FILE,
UPLOAD_ERR_NO_TMP_DIR, //Introduced in PHP 4.3.10 and PHP 5.0.3
UPLOAD_ERR_CANT_WRITE, //Introduced in PHP 5.1.0
UPLOAD_ERR_EXTENSION //Introduced in PHP 5.2.0
);
foreach($arr_const as $id => $const)
{
if(!defined($const))
define($const, $id);
}
}
}
?>