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

一个非常实用的php文件上传类

php 搞代码 4年前 (2022-01-01) 19次浏览 已收录 0个评论

这篇文章主要为大家详细介绍了一个非常实用的php文件上传类,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

其实网上已经有很多这样的类了,不过出于练手的目的还是自己仿照着写了一个。

下面的代码放在一个名为UploadFile.class.php文件内

 rand_name = $rand_name; $this->save_path = $save_path; $this->allow_type = $this->get_allow_type($allow_type); } /** * 上传文件 * 在上传文件前要做的工作 * (1) 获取文件所有信息 * (2) 判断上传文件是否合法 * (3) 设置文件存放路径 * (4) 是否重命名 * (5) 上传完成 * @param array $file 上传文件 *     $file须包含$file['name'], $file['size'], $file['error'], $file['tmp_name'] */ public function upload_file($file){ //$this->file   = $file; $this->file_name   = $file['name']; $this->file_size   = $file['size']; $this->error     = $file['error']; $this->file_tmp_name = $file['tmp_name']; $this->ext = $this->get_file_type($this->file_name); switch($this->error){ case 0: $this->msg = ''; break; case 1: $this->msg = '超出了php.ini中文件大小'; break; case 2: $this->msg = '超出了MAX_FILE_SIZE的文件大小'; break; case 3: $this->msg = '文件被部分上传'; break; case 4: $this->msg = '没有文件上传'; break; case 5: $this->msg = '文件大小为0'; break; default: $this->msg = '上传失败'; break; } if($this->error==0 && is_uploaded_file($this->file_tmp_name)){ //检测文件类型 if(in_array($this->ext, $this->allow_type)==false){ $this->msg = '文件类型不正确'; return false; } //检测文件大小 if($this->file_size > $this->max_size){ $this->msg = '文件过大'; return false; } } $this->set_file_name(); $this->uploaded = $this->save_path.$this->new_name; if(move_uploaded_file($this->file_tmp_name, $this->uploaded)){ $this->msg = '文件上传成功'; return true; }else{ $this->msg = '文件上传失败'; return false; } } /** * 设置上传后的文件名 * 当前的毫秒数和原扩展名为新文件名 */ public function set_file_name(){ if($this->rand_name==true){ $a = explode(' ', microtime()); $t = $a[1].($a[0]*1000000); $this->new_name = $t.'.'.($this->ext); }else{ $this->new_name = $this->file_name; } } /** * 获取上传文件类型 * @param string $filename 目标文件 * @return string $ext 文件类型 */ public function get_file_type($filename){ $ext = pathinfo($filename, PATHINFO_EXTENSION); return $ext; } /** * 获取可上传文件的类型 */ public function get_allow_type($allow_type){ $s = array(); if(is_arra<mark style="color:transparent">来源gaodaimacom搞#^代%!码网</mark>y($allow_type)){ foreach($allow_type as $value){ $s[] = $value; } }else{ $s = preg_split("/[\s,|;]+/", $allow_type); } return $s; } //获取错误信息 public function get_msg(){ return $this->msg; } } ?>

其实上面的代码中还有一个可以改进的地方,就是将那些以‘file_’开头的变量缩写为一个$file数组,这样感觉更好一些。

下面我们来测试一下上面的代码。我在一个名为upfile.php文件写测试代码,同时将UploadFile.class.php放在同一个路径下。

   <title>upfile</title>  0){ echo "Error: " . $_FILES["file"]["error"] . "<br />"; }else{ $file = $_FILES['file']; $upload = new UploadFile(true, './images/', array('jpg', 'jpeg', 'png')); $upload->upload_file($file); echo $upload->get_msg(); } }else{ ?>    

在上面的代码中,我们可以尝试修改第15行的参数,用来判断一下我们写的方法是否正确。

这3个参数的含义分别表示:是否使用系统命名、文件存放的路径(相对)、允许上传的文件类型。那么就试试修改这3个参数会发生什么样的变化:(1)把true改为false是否就可以使用它原来的名字了;(2)改下存放路径,看看能不能依然能够上传;(3)试试上传几个不允许的文件,看能不能禁止住,而且关键第三个参数有两种形式,一种是数组,就像示例中一样;还有一种是字符串,用分隔符隔开就行, ‘jpg|jpeg|png|gif’, ‘jpg jpeg png gif’, ‘jpg,jpeg,png,gif’都行。

好的,文件上传类就这样写好了。

以上就是一个非常实用的php文件上传类的详细内容,更多请关注gaodaima搞代码网其它相关文章!


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

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

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

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

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