Dream7115
2014-11-19 14:55
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(); } } }
对,这个你需要调试,看看到底是哪部出错啦,调试也是进步的过程
^-^...
其实有时候肯定是你自己太粗心的问题嘛~~~~我也很多时候是这样子的呢~
没关系,慢慢找哈~
PHP实现文件上传与下载
43735 学习 · 328 问题
相似问题