分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 运营维护

php实现文件上传

发布时间:2023-09-06 01:40责任编辑:胡小海关键词:文件上传

存档:

upload1.html(单文件上传)

 1 <html> 2 ????<head> 3 ????????<title>单个文件上传</title> 4 ????</head> 5 ????<body> 6 ????????<form action="upload.php" method="post" enctype="multipart/form-data"> 7 ????????????<input type="hidden" name="MAX_FILE_SIZE" value="1000000"> 8 ????????????选择文件:<input type="file" name="myfile"> 9 ????????????<input type="submit" value="上传文件">10 ????????</form>11 ????</body>12 </html>

upload2.html(多文件上传)

 1 <html> 2 ????<head> 3 ????????<title>多文件上传</title> 4 ????</head> 5 ????<body> 6 ????????<form action="upload.php" method="post" enctype="multipart/form-data"> 7 ????????????<input type="hidden" name="MAX_FILE_SIZE" value="1000000"> 8 ????????????选择文件1:<input type="file" name="myfile[]"><br> 9 ????????????选择文件2:<input type="file" name="myfile[]"><br>10 ????????????选择文件3:<input type="file" name="myfile[]"><br>11 ????????????<input type="submit" value="上传文件">12 ????????</form>13 ????</body>14 </html>

upload.php

 1 <?php 2 ????require "fileupload.class.php"; 3 ????$up=new FileUpload; 4 ????$up ->set(‘path‘,‘./newpath/‘) 5 ????????->set(‘size‘,1000000) 6 ????????->set(‘allowtype‘,array(‘gif‘,‘jpg‘,‘png‘)) 7 ????????->set(‘israndname‘,false); 8 ????if($up->upload(‘myfile‘)){ 9 ????????print_r($up->getFileName());10 ????}11 ????else{12 ????????print_r($up->getErrorMsg());13 ????}14 ?>

fileupload.class.php

 ?1 <?php ?2 ????class FileUpload{ ?3 ????????private $path="./uploads"; ?4 ????????private $allowtype=array(‘jpg‘,‘gif‘,‘png‘); ?5 ????????private $maxsize=1000000; ?6 ????????private $israndname=true; ?7 ????????private $originName; ?8 ????????private $tmpFileName; ?9 ????????private $fileType; 10 ????????private $fileSize; 11 ????????private $newFileName; 12 ????????private $errorNum=0; 13 ????????private $errorMess=""; 14 ?????????15 ????????function set($key,$val){ 16 ????????????$key=strtolower($key); 17 ????????????if(array_key_exists($key,get_class_vars(get_class($this)))){ 18 ????????????????$this->setOption($key,$val); 19 ????????????} 20 ????????????return $this; 21 ????????} 22 ?????????23 ????????function upload($fileField){ 24 ????????????$return=true; 25 ????????????if(!$this->checkFilePath()){ 26 ????????????????$this->errorMess=$this->getError(); 27 ????????????????return false; 28 ????????????} 29 ????????????$name=$_FILES[$fileField][‘name‘]; 30 ????????????$tmp_name=$_FILES[$fileField][‘tmp_name‘]; 31 ????????????$size=$_FILES[$fileField][‘size‘]; 32 ????????????$error=$_FILES[$fileField][‘error‘]; 33 ????????????if(is_Array($name)){ 34 ????????????????$errors=array(); 35 ????????????????for($i=0;$i<count($name);$i++){ 36 ????????????????????if($this->setFiles($name[$i],$tmp_name[$i],$size[$i],$error[$i])){ 37 ????????????????????????if(!$this->checkFileSize()||!$this->checkFileType()){ 38 ????????????????????????????$errors[]=$this->getError(); 39 ????????????????????????????$return=false; 40 ????????????????????????} 41 ????????????????????} 42 ????????????????????else{ 43 ????????????????????????$errors[]=$this->getError(); 44 ????????????????????????$return=false; 45 ????????????????????} 46 ????????????????????if(!$return){ 47 ????????????????????????$this->setFiles(); 48 ????????????????????} 49 ????????????????} 50 ????????????????if($return){ 51 ????????????????????$fileNames=array(); 52 ????????????????????for($i=0;$i<count($name);$i++){ 53 ????????????????????????if($this->setFiles($name[$i],$tmp_name[$i],$size[$i],$error[$i])){ 54 ????????????????????????????$this->setNewFileName(); 55 ????????????????????????????if(!$this->copyFile()){ 56 ????????????????????????????????$errors[]=$this->getError(); 57 ????????????????????????????????$return=false; 58 ????????????????????????????} 59 ????????????????????????????$fileNames[]=$this->newFileName; 60 ????????????????????????} 61 ????????????????????} 62 ????????????????????$this->newFileName=$fileNames; 63 ????????????????} 64 ????????????????$this->errorMess=$errors; 65 ????????????????return $return; 66 ????????????} 67 ????????????else{ 68 ????????????????if($this->setFiles($name,$tmp_name,$size,$error)){ 69 ????????????????????if($this->checkFileSize()&&$this->checkFileType()){ 70 ????????????????????????$this->setNewFileName(); 71 ????????????????????????if($this->copyFile()){ 72 ????????????????????????????return true; 73 ????????????????????????} 74 ????????????????????????else{ 75 ????????????????????????????$return=false; 76 ????????????????????????} 77 ????????????????????} 78 ????????????????????else{ 79 ????????????????????????$return=false; 80 ????????????????????} 81 ????????????????} 82 ????????????????else{ 83 ????????????????????$return=false; 84 ????????????????} 85 ????????????????if(!$return){ 86 ????????????????????$this->errorMess=$this->getError(); 87 ????????????????} 88 ????????????????return $return; 89 ????????????} 90 ????????} 91 ?????????92 ????????public function getFileName(){ 93 ????????????return $this->newFileName; 94 ????????} 95 ?????????96 ????????public function getErrorMsg(){ 97 ????????????return $this->errorMess; 98 ????????} 99 ????????100 ????????private function getError(){101 ????????????$str="上传文件<font color=‘red‘>{$this->originName}</font>时出错:";102 ????????????switch($this->errorNum){103 ????????????????case 4:104 ????????????????????$str.="没有文件被上传";105 ????????????????????break;106 ????????????????case 3:107 ????????????????????$str.="文件只有部分被上传";108 ????????????????????break;109 ????????????????case 2:110 ????????????????????$str.="上传的文件大小超过了HTML表单中MAX_FILE_SIZE选项指定的值";111 ????????????????????break;112 ????????????????case 1:113 ????????????????????$str.="上传的文件超过了php.ini中的upload_max_filesize选定限制的值";114 ????????????????????break;115 ????????????????case -1:116 ????????????????????$str.="未允许类型";117 ????????????????????break;118 ????????????????case -2:119 ????????????????????$str.="文件过大,上传的文件不能超过{$this->maxsize}个字节";120 ????????????????????break;121 ????????????????case -3:122 ????????????????????$str.="上传失败";123 ????????????????????break;124 ????????????????case -4:125 ????????????????????$str.="建立存放上传文件目录失败,请重新指定上传目录";126 ????????????????????break;127 ????????????????case -5:128 ????????????????????$str.="必须指定上传文件的路径";129 ????????????????????break;130 ????????????????default:131 ????????????????????$str.="未知错误";132 ????????????????????//break;133 ????????????}134 ????????????return $str.‘<br>‘;135 ????????}136 ????????137 ????????private function setFiles($name="",$tmp_name="",$size=0,$error=0){138 ????????????$this->setOption(‘errorNum‘,$error);139 ????????????if($error){140 ????????????????return false;141 ????????????}142 ????????????$this->setOption(‘originName‘,$name);143 ????????????$this->setOption(‘tmpFileName‘,$tmp_name);144 ????????????$aryStr=explode(".",$name);145 ????????????$this->setOption(‘fileType‘,strtolower($aryStr[count($aryStr)-1]));146 ????????????$this->setOption(‘fileSize‘,$size);147 ????????????return true;148 ????????}149 ????????150 ????????private function setOption($key,$val){151 ????????????$this->$key=$val;152 ????????}153 ????????154 ????????private function setNewFileName(){155 ????????????if($this->israndname){156 ????????????????$this->setOption(‘newFileName‘,$this->proRandName());157 ????????????}158 ????????????else{159 ????????????????$this->setOption(‘newFileName‘,$this->originName);160 ????????????}161 ????????}162 ????????163 ????????private function checkFileType(){164 ????????????if(in_array(strtolower($this->fileType),$this->allowtype)){165 ????????????????return true;166 ????????????}167 ????????????else{168 ????????????????$this->setOption(‘errorNum‘,-1);169 ????????????????return false;170 ????????????}171 ????????}172 ????????173 ????????private function checkFileSize(){174 ????????????if($this->fileSize>$this->maxsize){175 ????????????????$this->setOption(‘errorNum‘,-2);176 ????????????????return false;177 ????????????}178 ????????????else{179 ????????????????return true;180 ????????????}181 ????????}182 ????????183 ????????private function checkFilePath(){184 ????????????if(empty($this->path)){185 ????????????????$this->setOption(‘errorNum‘,-5);186 ????????????????return false;187 ????????????}188 ????????????if(!file_exists($this->path)||!is_writable($this->path)){189 ????????????????if(!@mkdir($this->path,0755)){190 ????????????????????$this->setOption(‘errorNum‘,-4);191 ????????????????????return false;192 ????????????????}193 ????????????}194 ????????????return true;195 ????????}196 ????????197 ????????private function proRandName(){198 ????????????$fileName = date(‘YmdHis‘)."_".rand(100,999);199 ????????????return $fileName.‘.‘.$this->fileType;200 ????????}201 ????????202 ????????private function copyFile(){203 ????????????if(!$this->errorNum){204 ????????????????$path=rtrim($this->path,‘/‘).‘/‘;205 ????????????????$path.=$this->newFileName;206 ????????????????if(@move_uploaded_file($this->tmpFileName,$path)){207 ????????????????????return true;208 ????????????????}209 ????????????????else{210 ????????????????????$this->setOption(‘errorNum‘,-3);211 ????????????????????return false;212 ????????????????}213 ????????????}214 ????????????else{215 ????????????????return false;216 ????????????}217 ????????}218 ????}219 ?>

结果如下:

php实现文件上传

原文地址:https://www.cnblogs.com/ECJTUACM-873284962/p/8408786.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved