澳门游戏平台大全 澳门游戏平台大全 一个非常实用的php文件上传类_php技巧_脚本之家

一个非常实用的php文件上传类_php技巧_脚本之家

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

本文实例讲述了ThinkPHP实现带验证码的文件上传功能。分享给大家供大家参考。具体实现方法如下:

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

ThinkPHP上传文件非常的简单我们只要调用一个文件上传类UploadFile就可以快速的实现上传功能了,下面我来给大家整理了一个上传文件时需要验证功能的例子,希望文章对大家会带来帮助。

rand_name = $rand_name; $this->save_path = $save_path; $this->allow_type = $this->get_allow_type; } /** * 上传文件 * 在上传文件前要做的工作 *  判断上传文件是否合法 *  是否重命名 *  上传完成 * @param array $file 上传文件 * $file须包含$file['name'], $file['size'], $file['error'], $file['tmp_name'] */ public function upload_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; switch{ 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){ //检测文件类型 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; $t = $a[1].; $this->new_name = $t.'.'.; }else{ $this->new_name = $this->file_name; } } /** * 获取上传文件类型 * @param string $filename 目标文件 * @return string $ext 文件类型 */ public function get_file_type{ $ext = pathinfo($filename, PATHINFO_EXTENSION); return $ext; } /** * 获取可上传文件的类型 */ public function get_allow_type{ $s = array(); if){ 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放在同一个路径下。

验证码

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

php处理文件复制代码
代码如下:maxSize=1000000;//设置上传图片大小$file->allowExtes=expload(‘,’,’jpg,jpeg,png,gif’);//设置文件上传格式$file->savePath=’/Tpl/default/Public/Uploads/’;//设置图片存放位置$file->thumb=’true’;//是否设置为缩略图$file->thumbPrefix=’s_’;//设置缩略图的前缀$file->thumbMaxWidth=’400,100′;//设置图片的最大宽度$file->thumbMaxHeight=’400,100′;//设置图片的最大高度if{$list=$file->getUploadFileInof();//获取文件上传信息import;//给图片添加水印Image::water($list[0][‘savepath’].’s_’.$list[0][‘savename’],’File/Tpl/defalut/Public/Images/logo.jpg’);}else{$this->error;}$Model=M;$data[‘image’]=$_POST[‘image’];$data[‘create_time’]=time();$vo=$Model->add;if{$this->success;}else{$this->error;}}}简单的分析一下例子

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

复制代码
代码如下:import;//导入文件上传类$file=newUploadFile();//实例化UploadFile类这个就是直接调用了thinkphp文件处理类了,我们不需要作任何操作了。在上传过程中与其它的类会有一些区别了

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

复制代码
代码如下:$Model=M;$data[‘image’]=$_POST[‘image’];$data[‘create_time’]=time();$vo=$Model->add;这个$_POST[‘image’]就是获取我们html
file的名字了,这个可以是数组那就是多文件上传了。

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

希望本文所述对大家的ThinkPHP程序设计有所帮助。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

标签:, , , , , ,

相关文章

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图