源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

封装ThinkPHP的一个文件上传方法实例

  • 时间:2021-08-14 05:07 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:封装ThinkPHP的一个文件上传方法实例
本文实例讲述了封装ThinkPHP的一个文件上传方法,分享给大家供大家参考。具体如下: 这阵子,对WBlog的上传功能作了优化。改进后的上传功能可以实现缩略图上传,图片上传,生成水印,文件上传,并且可以在后台对上传的附件进行大小(文件大小),类型(文件类型),水印(针对图片)的进行设置。此外还可以对上传的文件进行分类保存到相应的文件夹里,方便管理。 下面是对改进后的上传功能作简约的说明。 [b]缩略图上传[/b] 先前的缩略图上传功能使用了KindEditor的上传组件,除非上传之前对图片进行缩略处理,不然上传的是原图,改进后的上传功能可以通过系统对缩略图的大小进行设置,不管你上传的原图有多大,都会生成设置的大小的图片,并且自动删除原图,有效地减少垃圾信息的累积。上传的缩略图自动保存到Thumb文件夹 [b]图片上传[/b] 上传图片,可以根据需要设置图片的大小、上传图片的类型和添加水印。 [b]文件上传[/b] 如压缩文件,文档文件等,可根据需要添加上传文件类型和大小。 [b]添加水印[/b] 对上传的图片添加水印。 上面的上传功能我把它封装在模型类AttachModel.class.php里,用两个方法搞定:
[u]复制代码[/u] 代码如下:
/**          * 附件上传:上传图片,缩略图,文件          * @param string $model 上传所在模块          * @param bool $type 上传文件的类型::image(图片);thumb(缩略图);file(文件)          */              public function upload($model = null, $type = 'image'){             //导入上传类             import('ORG.NET.UploadFile');             $upload = new UploadFile();             $upload->saveRule = 'uniqid'; //设置上传文件规则             $upload->maxSize = C('MAXSIZE')*1024*1024;   //上传文件大小                 $upload->allowExts = explode(',', C('ALLOWEXTS'));//文件类型                             if ($model){                 $upload->savePath = './Public/Uploads/'.$model.'/';                 if (!file_exists($upload->savePath)) {                   mkdir($upload->savePath);                 }             }else{                 $upload->savePath = './Public/Uploads/Thumb/';                 if (!file_exists($upload->savePath)) {                   mkdir($upload->savePath);                 }             }             if (in_array($type,array('image','thumb'))){                 $upload->thumb = true;                 $upload->thumbRemoveOrigin  = true;// //删除原图                 $upload->thumbPrefix = 'wb_';                     $upload->thumbMaxWidth = $type=='thumb' ? C('THUMB_W') :C('IMAGE_W');//缩略图宽度                 $upload->thumbMaxHeight = $type=='thumb' ? C('THUMB_H') :C('IMAGE_H');//缩略图高度                                             }             if (!$upload->upload()) {                 return $upload->getErrorMsg();             }else{                 $uploadlist = $upload->getUploadFileInfo();                 if(C('ISWATER') && $type=='image'){                   import('ORG.Util.Image');                   //给m_缩略图添加水印, Image::water('原文件名','水印图片地址')                   foreach ($uploadlist as $key => $value){                     Image::water($value['savepath'] . 'wb_' . $value['savename'], './Public/admin/images/water.png');                  }                 }             }             if (in_array($type,array('image','file'))){                 return $this->_add($uploadlist,$model);             }else{                 return $uploadlist[0]['savename'];//返回缩略图保存名称             }                }         /*          * 上传的附件整合成attach所需数据,存入表并返回数组          * */    private function _add($uploadlist,$module=''){             //$j = count($uploadlist);             $v = array();             foreach ($uploadlist as $key => $value){                                     $v[$key]['name']        =   $value['name'];                 $v[$key]['savename']    =   $value['savename'];                 $v[$key]['savepath']    =   substr($value['savepath'], 2);                 $v[$key]['size']        =   $value['size'];                 $v[$key]['userId']      =   $_SESSION[C('USER_AUTH_KEY')];                 $v[$key]['uploadTime']  =   time();                 $v[$key]['alt']                 =   $_POST['alt'][$key];                 $v[$key]['module']          =   $_POST['module'];//当前项目路径                  $v[$key]['recordId']    =   $_POST['recordId'];//当前项目路径                  $this->add($v[$key]);                 if($this->thumb){                                             $v[$key]['prefix']      =   $this->thumbPrefix;                               }                 $v[$key]['id'] = M('Attach')->getLastInsID();                         }             return $v;      }
希望本文所述对大家的ThinkPHP框架程序设计有所帮助。
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部