php文件上传模块
晚自习闲来无事,自己动手写了个文件上传,稍作封装,便于以后使用.
class upload
{
private $tmp_dir;
private $file_max_size_string;
private $file_max_size;
private $line;
public function __construct()
{
$this->tmp_dir = get_cfg_var("upload_tmp_dir");
if(is_dir($this->tmp_dir))
{
if($this->dir_is_write($this->tmp_dir))
{
$this->file_max_size_string = get_cfg_var("upload_max_filesize");
$this->file_max_size = $this->get_size($this->file_max_size_string);
$this->line = $this->is_winnt()?"\\":"/";
return true;
}
else
{
return false;
}
return true;
}
else
{
return false;
}
}
public function up($form_name,$path,$name = NULL)
{
if(is_uploaded_file($_FILES[$form_name]["tmp_name"]))
{
$name = $name == NULL?time().rand(10000,99999):$name;
if($_FILES[$form_name]["size"] > $this->file_max_size)
{
return false;
}
if(move_uploaded_file($_FILES[$form_name]["tmp_name"],$path.$name.".".$this->getFileType(basename($_FILES[$form_name]["name"]))))
{
return array(
"type" => $this->getFileType(basename($_FILES[$form_name]["name"])),
"name" => $name.".".$this->getFileType(basename($_FILES[$form_name]["name"])),
"loaclname" => $_FILES[$form_name]["name"],
"path" => $path,
"size" => $_FILES[$form_name]["size"]
);
}
else
{
return false;
}
}
else
{
return false;
}
}
/****************/
private function dir_is_write($path)
{
if(file_exists($path))
{
if($this->is_winnt())
{
$rand_file = str_replace("\\","\\\\",$path) ."\\". rand(10000,99999).".wt";
}
else
{
$rand_file = $path."/".rand(10000,99999).".wt";
}
if(file_exists($rand_file))
{
return is_writable($rand_file);
}
else
{
$fp = fopen($rand_file,"w+");
if($fp == false)
{
fclose($fp);
return false;
}
else
{
fclose($fp);
$isw = is_writable($rand_file);
while(file_exists($rand_file))
{
unlink($rand_file);
}
return $isw;
}
}
}
else
{
return false;
}
}
private function is_winnt()
{
if(PHP_OS == "WINNT")
{
return true;
}
else
{
return false;
}
}
private function get_size($size_string)
{
$size_string = strtoupper($size_string);
$size = substr($size_string,0,strlen($size_string)-1);
$dw = substr($size_string,strlen($size_string)-1,1);
$jz = $this->is_winnt()?1024:1000;
switch($dw)
{
case "K":
return $size * $jz;
case "M":
return $size * $jz * $jz;
case "G":
return $size * $jz * $jz * $jz;
default:
return $size_string;
}
}
private function getFileType($name)
{
$arr = explode('.',$name);
return $arr[count($arr) - 1];
}
}

浙公网安备 33010602011771号