Thinkphp3.2.2+Uploadify文件上传生成缩略图

时间:2021-12-15 20:31:29


 
TP升级3.2以后,原来的文件上传类有了很大变化,上了很多规则。
根据网上 各位大神的资料整理,自己已经实现的用法。。
但是稍加修改,还是可以用的
1.贴出图片上传处理类
  1. /**
  2.      * 图片上传处理
  3.      * @param [String] $path [保存文件夹名称]
  4.      * @param [String] $thumbWidth [缩略图宽度]
  5.      * @param [String] $thumbHeight [缩略图高度]
  6.      * @return [Array] [图片上传信息]
  7.      */
  8.         
  9.     Private function _upload($path,$thumbWidth = '' , $thumbHeight = '') {
  10.         $obj = new \Think\Upload();// 实例化上传类
  11.         $obj->maxSize = C('UPLOAD_MAX_SIZE') ;// 设置附件上传大小
  12.         $obj->savePath =C('UPLOAD_PATH').$path.'/'; // 设置附件上传目录
  13.         $obj->exts =  C('UPLOAD_EXTS');// 设置附件上传类型
  14.         $obj->saveName = array('uniqid','');//文件名规则
  15.         $obj->replace = true;//存在同名文件覆盖
  16.         $obj->autoSub = true;//使用子目录保存
  17.         $obj->subName  = array('date','Ym');//子目录创建规则,
  18.         $info = $obj->upload();
  19.         if(!$info) {
  20.             return array('status' =>0, 'msg'=> $obj->getError() );
  21.         }else{
  22.             if($info){    //生成缩略图
  23.     
  24.                 $image = new \Think\Image();
  25.     
  26.                 foreach($info as $file) {
  27.                     
  28.                     $thumb_file = C('UPLOAD_PATH') . $file['savepath'] . $file['savename'];
  29.                     $save_path = C('UPLOAD_PATH') .$file['savepath'] . 'mini_' . $file['savename'];
  30.                     $image->open( $thumb_file )->thumb( $thumbWidth, $thumbHeight,\Think\Image::IMAGE_THUMB_FILLED )->save( $save_path );
  31.                     return array(
  32.                             'status' => 1,
  33.                             'savepath' => $file['savepath'],
  34.                             'savename' => $file['savename'],
  35.                             'pic_path' => $file['savepath'] . $file['savename'],
  36.                             'mini_pic' => $file['savepath'] . 'mini_' .$file['savename']
  37.                     );
  38.                     //@unlink($thumb_file); //上传生成缩略图以后删除源文件
  39.                 }
  40.             }else{
  41.                 foreach($info as $file) {
  42.                     return array(
  43.                             'status' => 1,
  44.                             'savepath' => $file['savepath'],
  45.                             'savename' => $file['savename'],
  46.                             'pic_path' => $file['savepath'].$file['savename']
  47.                     );
  48.                 }
  49.             }
  50.         }
  51.     }
复制代码
2、 将图像处理单独封装,以便于多出调用,
其中头像调用:
  1.     /*
  2.      * 头像上传
  3.      */
  4.     Public function uploadFace (){
  5.         if (!IS_POST) {
  6.             E('页面不存在');
  7.         }
  8.         $upload = $this->_upload('Face','180','180');
  9.         $data = json_encode($upload);
  10.         //$data = json_decode($obj);
  11.         //$this->ajaxReturn(json_encode($upload),'JSON');
  12.         $this->ajaxReturn($data,'JSON');
  13.         
  14.     }
复制代码
3、修改用户头像
  1. /*
  2.      * 修改用户头像
  3.      */
  4.     Public function editFace(){
  5.         if(!IS_POST){
  6.             E('页面不存在');
  7.         }
  8.         $db = M('userinfo');
  9.         $where = array('uid' => session('uid'));
  10.         $field = array('face180');
  11.         $old = $db->where($where)->field($field)->find();
  12.         //p($_POST);
  13.         //die;
  14.         if ($db->where($where)->save($_POST)) {
  15.             if (!empty($old['face180'])) {
  16.                 @unlink('./Uploads/'.$old['face180']);//删除之前的缩略图
  17.             }
  18.             $this->success('修改成功',U('index'));
  19.         }else{
  20.             $this->error('修改失败,请重试。。。');
  21.         }
  22.     }
复制代码
4、uploadify 回调函数:
  1. //头像上传Uploadify插件
  2.     $('#face').uploadify({
  3.         swf : PUBLIC + '/Uploadify/uploadify.swf',//引入Uploadify核心flash文件
  4.         uploader : uploadUrl,//PHP处理脚本地址
  5.         width : 120,//上传按钮样式
  6.         height : 30,
  7.         buttonImage : PUBLIC + '/Uploadify/browse-btn.png',//上传按钮背景图地址
  8.         fileTypeDesc : 'Image File',  //选择文件提示文字
  9.         fileTypeExts : '*.jpeg; *.jpg; *.png; *.gif',  //允许选择的文件类型
  10.         formData : {'session_id' : sid},
  11.         
  12.         //上传成功后的回调函数
  13.         onUploadSuccess : function (file, data, response){
  14.             eval('var data=' + data);
  15.             var data = JSON.parse(data); //由JSON字符串转换为JSON对象,json转成object
  16.             //alert(data.pic_path);
  17.             //alert(data.mini_pic);
  18.             //alert(data.status);
  19.             if(data.status){
  20.                 $('#face-img').attr('src',ROOT + '/Uploads/' + data.mini_pic);
  21.                 $('input[name=face180]').val(data.mini_pic);
  22.             }else {
  23.                 alert(msg.info);
  24.                 return false;
  25.             }
  26.             
  27.             
  28.         }
  29.     });
复制代码
5、前端页面 js 解析php 规则:
  1.  <script type='text/javascript'>
  2.         var PUBLIC = '__PUBLIC__';
  3.         var uploadUrl = '{:U("Common/uploadFace")}';
  4.         var sid = '{:session_id()}';
  5.         var ROOT = '__ROOT__';
  6.     </script>
复制代码
前端实现代码:
  1. <div class='form hidden'>
  2.                 <form action="{:U('editFace')}" method='post'>
  3.                     <div class='edit-face'>
  4.                         <img src="
  5.                         <if condition='$user["face180"]'>
  6.                             __ROOT__/Uploads/{$user.face180}
  7.                         <else/>
  8.                         __PUBLIC__/Images/noface.gif
  9.                         </if>" width='180' height='180' id='face-img'/>
  10.                         
  11.                         <p>
  12.                             <input type="file" name='face' id='face'/>
  13.                         </p>
  14.                         <p>
  15.                             <input type="hidden" name='face180' value=''/>
  16.                             <input type="submit" value='保存修改' class='edit-sub'/>
  17.                         </p>
  18.                     </div>
  19.                 </form>
  20.             </div>
复制代码
6、 config.php 部分变量:
  1.     //图片上传
  2.     'UPLOAD_MAX_SIZE' => 2000000, //最大上传大小
  3.     'UPLOAD_PATH' => './Uploads/', //文件上传保存路径
  4.     //'UPLOAD_PATH' => './', //文件上传保存路径
  5.     'UPLOAD_EXTS' => array('jpg','jpeg','gif','png'),
文章来源:http://www.thinkphp.cn/topic/27430.html

相关文章