PHP实现原生态图片上传封装类方法

PHP图片上传类,经典方式,不过上传效率还算可以,我自己用过的一个类,当时对这个类做了些修改,以满足自己特定功能的需要,对PHP熟悉的,可对这个上传类做优化和修改,后附有调用方法,让PHP开发者上传图片轻松容易就做到,先上类代码:

<?php class FileUpload_Single { //user define ------------------------------------- var $accessPath ; var $fileSize=200; var $defineTypeList="jpg|jpeg|gif|bmp";//string jpg|gif|bmp ... var $filePrefix= "useruplod_";//上传后的文件名前缀,可设置为空 var $changNameMode;//图片改名的规则,暂时只有三类,值范围 : 0 至 2 任一值 var $uploadFile;//array upload file attribute var $newFileName; var $error; function TODO() {//main 主类:设好参数,可以直接调用 $pass = true ; if ( ! $this -> GetFileAttri() ) { $pass = false; } if( ! $this -> CheckFileMIMEType() ) { $pass = false; $this -> error .= die("<script language=\"javascript\">alert('图片类型不正确,允许格式:jpg|jpeg|gif|bmp。');history.back()</script>"); } if( ! $this -> CheckFileAttri_size() ) { $pass = false; $this -> error .= die("<script language=\"javascript\">alert('上传的文件太大,请确保在200K以内。');history.back()</script>"); return false; } if ( ! $this -> MoveFileToNewPath() ) { $pass = false; $this -> error .= die("<script language=\"javascript\">alert('上传失败!文件移动发生错误!');history.back()</script>"); } return $pass; } function GetFileAttri() { foreach( $_FILES as $tmp ) { $this -> uploadFile = $tmp; } return (empty( $this -> uploadFile[ 'name' ])) ? false : true; } function CheckFileAttri_size() { if ( ! empty ( $this -> fileSize )) { if ( is_numeric( $this -> fileSize )) { if ($this -> fileSize > 0) { return ($this -> uploadFile[ 'size' ] > $this -> fileSize * 1024) ? false : true ; } } else { return false; } } else { return false; } } function ChangeFileName ($prefix = NULL , $mode) {// string $prefix , int $mode $fullName = (isset($prefix)) ? $prefix."_" : NULL ; switch ($mode) { case 0 : $fullName .= rand( 0 , 100 ). "_" .strtolower(date ("ldSfFYhisa")) ; break; case 1 : $fullName .= rand( 0 , 100 ). "_" .time(); break; case 2 : $fullName .= rand( 0 , 10000 ) . time(); break; default : $fullName .= rand( 0 , 10000 ) . time(); break; } return $fullName; } function MoveFileToNewPath() { $newFileName = NULL; $newFileName = $this -> ChangeFileName( $this -> filePrefix , 2 ). "." . $this -> GetFileTypeToString(); //检查目录是否存在,不存在则创建,当时我用的时候添加了这个功能,觉得没用的就注释掉吧 /* $isFile = file_exists( $this -> accessPath); clearstatcache(); if( ! $isFile && !is_dir($this -> accessPath) ) { echo $this -> accessPath; @mkdir($this -> accessPath); }*/ $array_dir=explode("/",$this -> accessPath);//把多级目录分别放到数组中 for($i=0;$i<count($array_dir);$i++){ $path .= $array_dir[$i]."/"; if(!file_exists($path)){ mkdir($path); } } ///////////////////////////////////////////////////////////////////////////////////////////////// if ( move_uploaded_file( $this -> uploadFile[ 'tmp_name' ] , realpath( $this -> accessPath ) . "/" .$newFileName ) ) { $this -> newFileName = $newFileName; return true; }else{ return false; } ///////////////////////////////////////////////////////////////////////////////////////////////// } function CheckFileExist( $path = NULL) { return ($path == NULL) ? false : ((file_exists($path)) ? true : false); } function GetFileMIME() { return $this->GetFileTypeToString(); } function CheckFileMIMEType() { $pass = false; $defineTypeList = strtolower( $this ->defineTypeList); $MIME = strtolower( $this -> GetFileMIME()); if (!empty ($defineTypeList)) { if (!empty ($MIME)) { foreach(explode("|",$defineTypeList) as $tmp) { if ($tmp == $MIME) { $pass = true; } } } else { return false; } } else { return false; } return $pass; } function GetFileTypeToString() { if( ! empty( $this -> uploadFile[ 'name' ] ) ) { return substr( strtolower( $this -> uploadFile[ 'name' ] ) , strlen( $this -> uploadFile[ 'name' ] ) - 3 , 3 ); } } } ?>

以下是PHP上传类的调用方法,PHP代码如下:

<?php include 'up.class.php';//加载PHP上传类文件 if (empty($HTTP_POST_FILES['image_file']['tmp_name']))//判断接收数据是否为空 { $tmp = new FileUpload_Single; $tmp -> accessPath ='upload';//图片上传的目录,这里是当前目录下的upload目录,可自己修改 if ( $tmp -> TODO() ) { $filename=$tmp -> newFileName;//生成的文件名 echo "图片上传成功,路径为:upload/".$filename; }else{ echo $tmp -> error; } } else{ echo "没有图片数据可上传"; } ?>

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

时间: 2024-08-03 18:09:29

PHP实现原生态图片上传封装类方法的相关文章

PHP实现原生态图片上传封装类方法_php实例

PHP图片上传类,经典方式,不过上传效率还算可以,我自己用过的一个类,当时对这个类做了些修改,以满足自己特定功能的需要,对PHP熟悉的,可对这个上传类做优化和修改,后附有调用方法,让PHP开发者上传图片轻松容易就做到,先上类代码: <?php class FileUpload_Single { //user define ------------------------------------- var $accessPath ; var $fileSize=200; var $defineTy

php封装的单文件(图片)上传类完整实例_php技巧

本文实例讲述了php封装的单文件(图片)上传类.分享给大家供大家参考,具体如下: <?php //封装php中的单文件(图片)上传类 /* //参数1:$file 文件数组 5个属性值 name,type,size,tmp,error //参数2:文件保存的路径$path //参数3:文件上传允许的类型 $allow数组 $allow=array('image/jpeg','image/jpg','image/png','image/gif') //参数4: 允许文件上传的最大大小 $size

如何使用php封装类实现图片上传可直接引用

 <?php class image { /** *完成图片的上传 * *@param array $file 待上传的文件信息的数组,用于5个元素的那个数组 *@return mixed 如果执行成功,返回上传了的文件名,否则返回false */ public function upload($file) { if($file['error'] == 0) { $allow_types = array('image/jpeg', 'image/pjpeg', 'image/png', 'ima

微信朋友圈的图片上传,多图上传怎么去撸才合适?我们一起来实现吧!

微信朋友圈的图片上传,多图上传怎么去撸才合适?我们一起来实现吧! 图片上传是非常常见的功能,而多图上传在大多数应用中也是非常常见的,比如微信的朋友圈,微博的动态,都是有九宫格图片的,那这里肯定涉及了多图上传,所以今天我们来一起撸一下,怎么去思考这个实现逻辑! 这里我想到的思路是比较简单的,首先,我们有一个按钮,按钮是上传图片,点击之后弹出某个界面进行图片的选择,一般是九张图片或者十二张,选完之后就直接上传了,大致的流程应该是这个样子,那我们首先来写个按钮 activity_main.xml <?

dwz前端框架+ssh后天框架 如何实现图片上传

问题描述 dwz前端框架+ssh后天框架 如何实现图片上传 我写了一个案例,但是后台action获取不到文件流,可是,我单独调用这个页面时候,就可以获取到文件流,我真心不知道怎么处理了?是不是由于本框架的原因呢? 不知道大神们有没有好一点的上传案例或者解决方案.我用的是比较落后的DWZ中uploadify多文件上传? 急急急!!!!! 解决方案 我做的公司运营平台也是dwz前端框架+ssh,废话不说,解决方案如下.给你提供个项目遇到的实例,不懂可以再问我哈: 1,首先,封装了一个上传文件(包含图

bootstrap-wysiwyg结合ajax实现图片上传实时刷新功能_javascript技巧

最近由于项目需求,要实现一个前端文本编辑框,附带图片上传实时查看的功能.比较了网上的几款插件,首先是百度的UEitor,发现该框架过于庞大,一个小框架引入如此多的文件并不是我想看到的:其次是jQuery的easyUI,虽然个人版的是免费的,但是项目属于公司业务,似乎用商业版的框架并不妥.考虑到项目的前端主要就是在bootstrap的基础上构建起来的,最终选用了bootstrap-wysiwyg插件,它非常的精简,轻巧而且扩展性强. 引入bootstrap-wysiwyg并且实现文本编辑功能十分的

分离与继承的思想实现图片上传后的预览功能:ImageUploadView_javascript技巧

本文要介绍的是网页中常见的图片上传后直接在页面生成小图预览的实现思路,考虑到该功能有一定的适用性,于是把相关的逻辑封装成了一个ImageUploadView组件,实际使用效果可查看下一段的git效果图.在实现这个组件的过程中,有用到前面几篇博客介绍的相关内容,比如继承库class.js,任意组件的事件管理库eventBase.js,同时包含进了自己对职责分离,表现与行为分离这两方面的一些思考,欢迎阅读与交流. 演示效果: 注:由于演示的代码都是静态的,所以文件上传的组件是用setTimeout模

苹果开发之ios图片上传方法

方法1 在项目中我们经常会遇到需要上传图片的地方,比如更换头像,上传证件照片等.下面介绍一种上传图片的方法. 首先我们需要在项目里打开手机的相册或者相机,然后在下面这个代理方法里进行图片的上传操作. 需要遵循 <UIImagePickerControllerDelegate,UINavigationControllerDelegate>代理. -(void)imagePickerController:(UIImagePickerController *)picker didFinishPick

图片上传预览原理及实现

目前网上有很多支持图片上传时进行预览的插件,功能完备,界面优雅,使用起来也很方便.一直以来也就只是用用,没有想过这些插件背后的实现原理.趁着今天有点时间,也来学习学习. 追根溯源 设想 原理 DataURL浅析 格式 预览实现 HTML JavaScript控制 预览效果 打包封装 简易封装 使用方式 测试 总结 追根溯源 设想 一开始,按照我的思路,预览可能是这么来实现的.本地选中一张图片,嵌入html的同时会显示图片的本地的绝对路径,然后通过js简单的进行设置,应该就可以实现预览效果了. 但