<?php
/***********************move_uploaded_file()函数及$_FILES[]实现单个文件上传***********************a
*功能说明:实现单个文件上传
*建立人员:肖红阳
*建立日期:2010-07-21
*修改日期:2010-07-22
*设计思想:1.传送开关(action)打开开始处理2.判断过大?断开重新指定:继续3.文件是否传完到缓冲区?用move_uploaded_file()移动到终点位置:显示上传成功或失败
*使用说明:
<form name="form_upload" method="post" action="<?php echo $_SERVER['PHP_SELF'];?>" enctype="multipart/form-data">
<input type="hidden" name="post" value="postok"/>
<input type="file" name="u_file"/>
<input type="submit" value="提交"/>
</form>
<?php
include ('class/c_file/c_upload_one.php');
$up = new c_upload_one('post','postok','./pic','u_file','30',$_SERVER['PHP_SELF']);
?>
*******************************************/
class c_upload_one{
public $action; //传送开关名在表单中的name值
public $path; //上传的目的路径
public $filename; //上传的文件名
public $maxsize; //文件最大容量数值以m兆为单位
function __construct($action,$actionvalue,$path,$filename,$maxsize,$location){
$this->action=$action; //传送开关名在表单中的name值
$this->actionvalue=$actionvalue; //传送开关名的value值
$this->path=$path; //上传的目的路径
$this->filename=$filename; //上传表单中的type为file的name值
$this->maxsize_toB = $maxsize*1048576 ; //文件最在值以B为单位值
$this->maxsize_toM= $maxsize; //文件最在值以m为单位值
$this->location = $location; //上传完成后转向的地址
$this->upload();
}
function upload(){
if(!is_dir($this->path)){ echo "<script>alert('目录".$this->path."不存在');history.back();</script>";}
if($_POST[$this->action]==$this->actionvalue) //判断传送开关是否触发
{
if($_FILES[$this->filename][size]>$this->maxsize_toB){ //判断文件是否过大
echo " <script>alert('该文件过大请选择小于".$this->maxsize_toM."M的文件'); </script>";
}
else if($_FILES[$this->filename][tmp_name]){
//$path=$this->path;
move_uploaded_file($_FILES[$this->filename][tmp_name],$this->path.$_FILES[$this->filename][name]);//将文件从缓存中移到目标文件夹
$path=$this->path."/";
echo "<script>alert('上传成功');window.location='".$this->location.
"?path=".$path."&& filename=". $_FILES[$this->filename][name] ."';</script>";//以get方式返回目录及文件名称以供它用
}
else echo "<script>alert('上传失败');history.back();</script>";
}
}
function filename(){
echo $this->filename;
}
}
?>