• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

PHP设计超级好用的文件上传处理类一 (37)

php 搞代码 4年前 (2022-01-23) 30次浏览 已收录 0个评论
<?<span>php    </span><span>class</span><span> FileUpload {        </span><span>private</span> $filepath;     <span>//</span><span>指定上传文件保存的路径</span><span>private</span> $allowtype=array(<span>'</span><span>gif</span><span>'</span>, <span>'</span><span>jpg</span><span>'</span>, <span>'</span><span>png</span><span>'</span>, <span>'</span><span>jpeg</span><span>'</span>);  <span>//</span><span>充许上传文件的类型</span><span>private</span> $maxsize=<span>1000000</span>;  <span>//</span><span>允上传文件的最大长度 1M</span><span>private</span> $israndname=<span>true</span>;  <span>//</span><span>是否随机重命名, true false不随机,使用原文件名</span><span>private</span> $originName;   <span>//</span><span>源文件名称</span><span>private</span> $tmpFileName;   <span>//</span><span>临时文件名</span><span>private</span> $fileType;  <span>//</span><span>文件类型</span><span>private</span> $fileSize;  <span>//</span><span>文件大小</span><span>private</span> $newFileName; <span>//</span><span>新文件名</span><span>private</span> $errorNum=<span>0</span>;  <span>//</span><span>错误号</span><span>private</span> $errorMess=<span>""</span>; <span>//</span><span>用来提供错误报告        </span><span>//</span><span>用于对上传文件初使化        </span><span>//</span><span>1. 指定上传路径, 2,充许的类型, 3,限制大小, 4,是否使用随机文件名称        </span><span>//</span><span>让用户可以不用按位置传参数,后面参数给值不用将前几个参数也提供值</span>        function __construct($opti>array()){            </span><span>foreach</span>($options <span>as</span> $key=><span>$val){                $key</span>=<span>strtolower($key);                </span><span>//</span><span>查看用户参数中数组的下标是否和成员属性名相同</span><span>if</span>(!in_array($key,get_class_vars(get_class($<span>this</span><span>)))){                    </span><span>continue</span><span>;                }                $</span><span>this</span>-><span>setOption($key, $val);            }                         }            </span><span>private</span><span> function getError(){            $str</span>=<span>"</span><span>上传文件<font color='red'>{$this->originName}</font>时出错:</span><span>"</span><span>;            </span><span>switch</span>($<span>this</span>-><span>errorNum){                </span><span>case</span><span>4</span>: $str .= <span>"</span><span>没有文件被上传</span><span>"</span>; <span>break</span><span>;                </span><span>case</span><span>3</span>: $str .= <span>"</span><span>文件只被部分上传</span><span>"</span>; <span>break</span><span>;                </span><span>case</span><span>2</span>: $str .= <span>"</span><span>上传文件超过了HTML表单中MAX_FILE_SIZE选项指定的值</span><span>"</span>; <span>break</span><span>;                </span><span>case</span><span>1</span>: $str .= <span>"</span><span>上传文件超过了php.ini 中upload_max_filesize选项的值</span><span>"</span>; <span>break</span><span>;                </span><span>case</span> -<span>1</span>: $str .= <span>"</span><span>末充许的类型</span><span>"</span>; <span>break</span><span>;                </span><span>case</span> -<span>2</span>: $str .= <span>"</span><span>文件过大,上传文件不能超过{$this->maxSize}个字节</span><span>"</span>; <span>break</span><span>;                </span><span>case</span> -<span>3</span>: $str .= <span>"</span><span>上传失败</span><span>"</span>; <span>break</span><span>;                </span><span>case</span> -<span>4</span>: $str .= <span>"</span><span>建立存放上传文件目录失败,请重新指定上传目录</span><span>"</span>; <span>break</span><span>;                </span><span>case</span> -<span>5</span>: $str .= <span>"</span><span>必须指定上传文件的路径</span><span>"</span>; <span>break</span><span>;                </span><span>default</span>: $str .=  <span>"</span><span>末知错误</span><span>"</span><span>;            }            </span><span>return</span> $str.<span>'</span><span><br></span><span>'</span><span>;        }            </span><span>//</span><span>用来检查文件上传路径</span><span>private</span><span> function checkFilePath(){            </span><span>if</span>(empty($<span>this</span>-><span>filepath)) {                $</span><span>this</span>->setOption(<span>'</span><span>errorNum</span><span>'</span>, -<span>5</span><span>);                </span><span>return</span><span>false</span><span>;            }            </span><span>if</span>(!file_exists($<span>this</span>->filepath) || !is_writable($<span>this</span>-><span>filepath)){                </span><span>if</span>(!@mkdir($<span>this</span>->filepath, <span>0755</span><span>)){                    $</span><span>this</span>->setOption(<span>'</span><span>errorNum</span><span>'</span>, -<span>4</span><span>);   <strong>*本文来@源gao@daima#com搞(%代@#码@网2</strong><pre>搞代gaodaima码

returnfalse; } } returntrue; } //用来检查文件上传的大小private function checkFileSize() { if($this->fileSize > $this->maxsize){ $this->setOPtion(errorNum, -2); returnfalse; }else{ returntrue; } } //用于检查文件上传类型private function checkFileType() { if(in_array(strtolower($this->fileType), $this->allowtype)) { returntrue; }else{ $this->setOption(errorNum, –1); returnfalse; } } //设置上传后的文件名称private function setNewFileName(){ if($this->israndname){ $this->setOption(newFileName, $this->proRandName()); } else { $this->setOption(newFileName, $this->originName); } } //设置随机文件名称private function proRandName(){ $fileName=date(YmdHis).rand(100,999); return $fileName...$this->fileType; } private function setOption($key, $val){ $this->$key=$val; } //用来上传一个文件 function uploadFile($fileField){ $return=true; //检查文件上传路径if(!$this->checkFilePath()){ $this->errorMess=$this->getError(); returnfalse; } $name=$_FILES[$fileField][name]; $tmp_name=$_FILES[$fileField][tmp_name]; $size=$_FILES[$fileField][size]; $error=$_FILES[$fileField][error]; if(is_Array($name)){ $errors=array(); for($i=0; $i<count($name); $i++){ if($this->setFiles($name[$i], $tmp_name[$i], $size[$i], $error[$i])){ if(!$this->checkFileSize() || !$this->checkFileType()){ $errors[]=$this->getError(); $return=false; } }else{ $error[]=$this->getError(); $return=false; } if(!$return) $this->setFiles(); } if($return){ $fileNames=array(); for($i=0; $i<count($name); $i++){ if($this->setFiles($name[$i], $tmp_name[$i], $size[$i], $error[$i])){ $this->setNewFileName(); if(!$this->copyFile()){ $errors=$this->getError(); $return=false; }else{ $fileNames[]=$this->newFileName; } } } $this->newFileName=$fileNames; } $this->errorMess=$errors; return $return; } else { if($this->setFiles($name, $tmp_name, $size, $error)){ if($this->checkFileSize() && $this->checkFileType()){ $this->setNewFileName(); if($this->copyFile()){ returntrue; }else{ $return=false; } }else{ $return=false; } }else{ $return=false; } if(!$return) $this->errorMess=$this->getError(); return $return; } } private function copyFile(){ if(!$this->errorNum){ $filepath=rtrim($this->filepath, /)./; $filepath.=$this->newFileName; if(@move_uploaded_file($this->tmpFileName, $filepath)) { returntrue; }else{ $this->setOption(errorNum, –3); returnfalse; } }else{ returnfalse; } } //设置和$_FILES有关的内容private function setFiles($name=“”, $tmp_name=, $size=0, $error=0){ $this->setOption(errorNum, $error); if($error){ returnfalse; } $this->setOption(originName, $name); $this->setOption(tmpFileName, $tmp_name); $arrStr=explode(., $name); $this->setOption(fileType, strtolower($arrStr[count($arrStr)-1])); $this->setOption(fileSize, $size); returntrue; } //用于获取上传后文件的文件名 function getNewFileName(){ return $this->newFileName; } //上传如果失败,则调用这个方法,就可以查看错误报告 function getErrorMsg() { return $this->errorMess; } }

以上就介绍了PHP设计超级好用的文件上传处理类一 (37),包括了方面的内容,希望对PHP教程有兴趣的朋友有所帮助。


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:PHP设计超级好用的文件上传处理类一 (37)
喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址