1、upload.php页面代码
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>无标题文档</title>
</head>
<body>
<form action="doaction_new.php" method="post" enctype="multipart/form-data">
请选择要上传的文件:
<input type="file" name="myFile"/>
<input type="submit" value="上传文件"/>
</form>
</body>
</html>
2、doaction_new.php页面的代码
<?php
header('content-type:text/html;charset=gb2312');
require_once 'upload.class.php';
//print_r($_FILES);exit;
$upload=new upload();
$dest=$upload->uploadFile();
echo $dest;
3、upload.class.php页面的代码
<?php
class upload{
protected $fileName;
protected $maxSize;
protected $allowMime;
protected $allowExt;
protected $uploadPath;
protected $imgFlag;
protected $fileInfo;
protected $error;
protected $ext;
public function __construct($fileName='myFile',$uploadPath='./uploads',$imgFlag=true,$maxSize=5242880,$allowExt=array('jpeg','jpg','png','gif','bmp'),$allowMime=array('image/pjpeg','image/jpeg','image/jpg','image/png','image/gif')){
$this->fileName=$fileName;
$this->maxSize=$maxSize;
$this->allowMime=$allowMime;
$this->allowExt=$allowExt;
$this->uploadPath=$uploadPath;
$this->imgFlag=$imgFlag;
$this->fileInfo=$_FILES[$this->fileName];
}
/**检测上传文件是否有错**/
protected function checkError(){
//var_dump($this->fileInfo);exit;
//print_r($this->fileInfo);exit;
if(!is_null($this->fileInfo)){
if($this->fileInfo['error']>0){
var_dump($this->fileInfo);exit;
if($this->fileInfo['error']>0){
switch($this->fileInfo['error']){
case 1;
$this->error='超过了PHP配置文件中upload_max_filesize选项的值';
break;
case 2;
$this->error='超过了表单中Max_file_size设置的值';
break;
case 3;
$this->error='文件部分被上传';
break;
case 4;
$this->error='没有选择上传文件';
break;
case 6;
$this->error='没有找到临时目录';
break;
case 7;
$this->error='文件不可写';
break;
case 8;
$this->error='由于PHP的扩展程序中断上传';
break;
}
return false;
}else{
echo aa;
return true;
}
}else{
$this->error='文件上传出错';
return false;
}
}
/**检查上传文件的大小**/
protected function checkSize(){
if($this->fileInfo['size']>$this->maxSize){
$this->error='上传文件过大';
return false;
}
return true;
}
/**检测扩展名**/
protected function checkExt(){
$this->ext=strtolower(pathinfo($this->fileInfo['name'],PATHINFO_EXTENSION));
if(!in_array($this->ext,$this->allowExt)){
$this->error='不允许的扩展名';
return false;
}
return true;
}
/**检测文件的类型**/
protected function checkMime(){
if(!in_array($this->fileInfo['type'],$this->allowMime)){
$this->error='不允许的文件类型';
return false;
}
return true;
}
/**检测是否是真实图片**/
protected function checkTrueImg(){
if($this->imgFlag){
if(!@getimagesize($this->fileInfo['tmp_name'])){
$this->error='不是真实的照片';
return false;
}
return true;
}
}
/**检测是否通过HTTPPost方式上传**/
protected function checkHTTPPost(){
if(!is_uploaded_file($this->fileInfo['tmp_name'])){
$this->error='文件不是通过HTTPPost方式上传的';
return false;
}
return true;
}
/**显示错误**/
protected function showError(){
exit('<sapn style="color:red">'.$this->error.'</span>');
}
/**检测目录不存在则创建**/
protected function checkUploadPath(){
if(!file_exists($this->uploadPath)){
mkdir($this->uploadPath,0777,true);
}
}
/**产生唯一字符串当做文件名**/
protected function getUniName(){
return md5(uniqid(microtime(true),true));
}
/**上传文件**/
public function uploadFile(){
if($this->checkError()&&$this->checkSize()&&$this->checkExt()&&$this->checkMime()&&$this->checkTrueImg()&&$this->checkHTTPPost()){
$this->checkUploadPath();
$this->uniName=$this->getUniName();
$this->destination=$this->uploadPath.'/'.$this->uniName.'.'.$this->ext;
if(@move_upload_file($this->fileInfo['tmp_name'],$this->destination)){
return $this->destination;
}else{
$this->error='文件移动失败';
$this->showError();
}
}else{
$this->showError();
}
}
}