php实现文件下载和多文件上传
文件下载:
html:
文件上传:
html代码:请选择您要上传的文件:
请选择您要上传的文件:
请选择您要上传的文件:
请选择您要上传的文件:
请选择您要上传的文件:
php代码:
common.func.php
upload.func1.php
$val){$files[$i]['name']=$file['name'][$key];$files[$i]['type']=$file['type'][$key];$files[$i]['tmp_name']=$file['tmp_name'][$key];$files[$i]['error']=$file['error'][$key];$files[$i]['size']=$file['size'][$key];$i++;}}}return $files;}/** * 针对于单文件、多个单文件、多文件的上传 * @param array $fileInfo * @param string $path * @param string $flag * @param number $maxSize * @param array $allowExt * @return string */function uploadFile($fileInfo,$path='./uploads',$flag=true,$maxSize=1048576,$allowExt=array('jpeg','jpg','png','gif')){//$flag=true;//$allowExt=array('jpeg','jpg','gif','png');//$maxSize=1048576;//1M//判断错误号if($fileInfo['error']===UPLOAD_ERR_OK){//检测上传得到小if($fileInfo['size']>$maxSize){$res['mes']=$fileInfo['name'].'上传文件过大';}$ext=getExt($fileInfo['name']);//检测上传文件的文件类型if(!in_array($ext,$allowExt)){$res['mes']=$fileInfo['name'].'非法文件类型';}//检测是否是真实的图片类型if($flag){if(!getimagesize($fileInfo['tmp_name'])){$res['mes']=$fileInfo['name'].'不是真实图片类型';}}//检测文件是否是通过HTTP POST上传上来的if(!is_uploaded_file($fileInfo['tmp_name'])){$res['mes']=$fileInfo['name'].'文件不是通过HTTP POST方式上传上来的';}if($res) return $res;//$path='./uploads';if(!file_exists($path)){mkdir($path,0777,true);chmod($path,0777);}$uniName=getUniName();$destination=$path.'/'.$uniName.'.'.$ext;if(!move_uploaded_file($fileInfo['tmp_name'],$destination)){$res['mes']=$fileInfo['name'].'文件移动失败';}$res['mes']=$fileInfo['name'].'上传成功';$res['dest']=$destination;return $res;}else{//匹配错误信息switch ($fileInfo ['error']) {case 1 :$res['mes'] = '上传文件超过了PHP配置文件中upload_max_filesize选项的值';break;case 2 :$res['mes'] = '超过了表单MAX_FILE_SIZE限制的大小';break;case 3 :$res['mes'] = '文件部分被上传';break;case 4 :$res['mes'] = '没有选择上传文件';break;case 6 :$res['mes'] = '没有找到临时目录';break;case 7 :case 8 :$res['mes'] = '系统错误';break;}return $res;}}
doAction5.php
上面是通过函数实现,下载封装成为类:
html:请选择您要上传的文件:
upload.class.php
fileName=$fileName;$this->maxSize=$maxSize;$this->allowMime=$allowMime;$this->allowExt=$allowExt;$this->uploadPath=$uploadPath;$this->imgFlag=$imgFlag;$this->fileInfo=$_FILES[$this->fileName];}/** * 检测上传文件是否出错 * @return boolean */protected function checkError(){if(!is_null($this->fileInfo)){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{return true;}}else{$this->error='文件上传出错';return false;}}/** * 检测上传文件的大小 * @return boolean */protected function checkSize(){if($this->fileInfo['size']>$this->maxSize){$this->error='上传文件过大';return false;}return true;}/** * 检测扩展名 * @return boolean */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;}/** * 检测文件的类型 * @return boolean */protected function checkMime(){if(!in_array($this->fileInfo['type'],$this->allowMime)){$this->error='不允许的文件类型';return false;}return true;}/** * 检测是否是真实图片 * @return boolean */protected function checkTrueImg(){if($this->imgFlag){if([email protected]($this->fileInfo['tmp_name'])){$this->error='不是真实图片';return false;}return true;}}/** * 检测是否通过HTTP POST方式上传上来的 * @return boolean */protected function checkHTTPPost(){if(!is_uploaded_file($this->fileInfo['tmp_name'])){$this->error='文件不是通过HTTP POST方式上传上来的';return false;}return true;}/** *显示错误 */protected function showError(){exit(''.$this->error.'');}/** * 检测目录不存在则创建 */protected function checkUploadPath(){if(!file_exists($this->uploadPath)){mkdir($this->uploadPath,0777,true);}}/** * 产生唯一字符串 * @return string */protected function getUniName(){return md5(uniqid(microtime(true),true));}/** * 上传文件 * @return string */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_uploaded_file($this->fileInfo['tmp_name'], $this->destination)){return $this->destination;}else{$this->error='文件移动失败';$this->showError();}}else{$this->showError();}}}
doAction6.php
uploadFile();echo $dest;
相关文章
相关视频