Пример #1
0
 public function actionUpload()
 {
     $uptype = zmf::filterInput($_GET['type'], 't', 1);
     $logid = zmf::filterInput($_GET['id']);
     //所属对象
     $reImgsize = zmf::filterInput($_GET['imgsize']);
     //返回图片的尺寸
     $fileholder = zmf::filterInput($_GET['fileholder'], 't', 1);
     //上传控件的ID
     //将ads替换为flash
     if (!isset($uptype) or !in_array($uptype, array('siteinfo', 'post'))) {
         $this->jsonOutPut(0, '请设置上传所属类型' . $uptype);
     }
     if (Yii::app()->request->getParam('PHPSESSID')) {
         Yii::app()->session->close();
         $res = Yii::app()->session->setSessionID(Yii::app()->request->getParam('PHPSESSID'));
         Yii::app()->session->open();
     }
     if (Yii::app()->user->isGuest) {
         $this->jsonOutPut(0, Yii::t('default', 'loginfirst'));
     }
     if (!$fileholder) {
         $fileholder = 'filedata';
     }
     if (!isset($_FILES[$fileholder]) || !is_uploaded_file($_FILES[$fileholder]["tmp_name"]) || $_FILES[$fileholder]["error"] != 0) {
         $this->jsonOutPut(0, '无效上传,请重试');
     }
     $model = new Attachments();
     $img = CUploadedFile::getInstanceByName($fileholder);
     $ext = $img->getExtensionName();
     $size = $img->getSize();
     if ($size > zmf::config('imgMaxSize')) {
         $this->jsonOutPut(0, '上传文件最大尺寸为:' . tools::formatBytes(zmf::config('imgMaxSize')));
     }
     $upExt = zmf::config("imgAllowTypes");
     if (!preg_match('/^(' . str_replace('*.', '|', str_replace(';', '', $upExt)) . ')$/i', $ext)) {
         $this->jsonOutPut(0, '上传文件扩展名必需为:' . $upExt);
     }
     $sizeinfo = getimagesize($_FILES[$fileholder]["tmp_name"]);
     if ($sizeinfo['0'] < zmf::config('imgMinWidth') or $sizeinfo[1] < zmf::config('imgMinHeight')) {
         $this->jsonOutPut(0, "要求上传的图片尺寸,宽不能不小于" . zmf::config('imgMinWidth') . "px,高不能小于" . zmf::config('imgMinHeight') . "px.");
     }
     $ctime = zmf::now();
     $dirs = zmf::uploadDirs($ctime, 'app', $uptype, null, true);
     $fileName = uniqid() . '.' . $ext;
     $origin = $dirs['origin'];
     unset($dirs['origin']);
     $uploadedFiles = array();
     $uploadedFiles[] = array('from' => $origin . $fileName, 'to' => zmf::ftpPath($ctime, $uptype, 'origin') . $fileName);
     if (move_uploaded_file($_FILES[$fileholder]["tmp_name"], $origin . $fileName)) {
         $data = array();
         $status = Posts::STATUS_PASSED;
         $data['uid'] = Yii::app()->user->id;
         $data['logid'] = $logid;
         $data['filePath'] = $fileName;
         $data['fileDesc'] = $fileName;
         $data['classify'] = $uptype;
         $data['covered'] = '0';
         $data['cTime'] = time();
         $data['status'] = $status;
         $data['width'] = $sizeinfo[0];
         $data['height'] = $sizeinfo[1];
         $data['size'] = $size;
         $model->attributes = $data;
         if ($model->validate()) {
             if ($model->save()) {
                 $image = Yii::app()->image->load($origin . $fileName);
                 $_quality = zmf::config('imgQuality');
                 $quality = isset($quality) ? $quality : 100;
                 foreach ($dirs as $dk => $_dir) {
                     if ($dk < 600) {
                         $image->smart_resize($dk, $dk * 0.75)->quality($quality);
                     } else {
                         $image->resize($dk, $dk)->quality($quality);
                     }
                     $image->save($_dir . $fileName);
                     $_todir = zmf::ftpPath($ctime, $uptype, $dk);
                     $uploadedFiles[] = array('id' => $model->id, 'from' => $_dir . $fileName, 'to' => $_todir . $fileName);
                 }
                 $imgsize = $reImgsize > 0 ? $reImgsize : 170;
                 $returnimg = zmf::uploadDirs($ctime, 'site', $uptype, $imgsize) . $fileName;
                 $outPutData = array('status' => 1, 'attachid' => $model->id, 'imgsrc' => $returnimg);
                 $json = CJSON::encode($outPutData);
                 echo $json;
             } else {
                 $this->jsonOutPut(0, '写入数据库错误');
             }
         } else {
             $this->jsonOutPut(0, '数据验证错误');
         }
     }
 }
Пример #2
0
 public function addPostImg()
 {
     $logid = zmf::filterInput($_GET['id']);
     $uptype = zmf::filterInput($_GET['imgtype'], 't', 1);
     if (!$uptype) {
         $this->jsonOutPut(0, '不允许的分类');
     }
     if (!$logid) {
         $logid = 0;
     }
     $ctime = time();
     $dirs = zmf::upDirs($ctime, 'app', $uptype);
     $origin = $dirs['origin'] . '/';
     unset($dirs['origin']);
     zmf::createUploadDir($origin);
     $img = CUploadedFile::getInstanceByName('filedata');
     if ($img->getHasError()) {
         $this->jsonOutPut(0, '上传有误,请重试');
     }
     $ext = $img->getExtensionName();
     $upExt = zmf::config("imgAllowTypes");
     if (!preg_match('/^(' . str_replace('*.', '|', str_replace(';', '', $upExt)) . ')$/i', $ext)) {
         $this->jsonOutPut(0, '上传文件扩展名必需为:' . $upExt);
     }
     $size = $img->getSize();
     if ($size > zmf::config('imgMaxSize')) {
         $this->jsonOutPut(0, '上传文件最大尺寸为:' . tools::formatBytes(zmf::config('imgMaxSize')));
     }
     $_imgInfo = getimagesize($_FILES["filedata"]["tmp_name"]);
     if ($_imgInfo['0'] < zmf::config('imgMinWidth') or $_imgInfo[1] < zmf::config('imgMinHeight')) {
         $this->jsonOutPut(0, "宽不能小于" . zmf::config('imgMinWidth') . "px<br/>高不能小于" . zmf::config('imgMinHeight') . "px");
     }
     $fileName = uniqid() . '.' . $ext;
     //    $_extra=self::getUpExtraUrl($ctime);
     //    $filePath=$_extra.'/'.$fileName;
     if (move_uploaded_file($_FILES["filedata"]["tmp_name"], $origin . $fileName)) {
         $uid = Yii::app()->user->id;
         $uid = 1;
         $data['uid'] = $uid;
         $data['logid'] = $logid;
         $data['filePath'] = $fileName;
         $data['fileDesc'] = $fileName;
         $data['classify'] = $uptype;
         $data['covered'] = '0';
         $data['cTime'] = $ctime;
         $data['status'] = Posts::STATUS_DELED;
         $model = new Attachments();
         $model->attributes = $data;
         if ($model->validate()) {
             if (!$model->save()) {
                 $this->jsonOutPut(0, '写入数据库出错');
             } else {
                 $attachid = $model->id;
             }
         } else {
             $this->jsonOutPut(0, '数据验证错误');
         }
         $image = Yii::app()->image->load($origin . $fileName);
         $_quality = zmf::config('imgQuality');
         $quality = isset($quality) ? $quality : 100;
         foreach ($dirs as $dk => $_dir) {
             zmf::createUploadDir($_dir);
             if ($_imgInfo[0] < $dk && $_imgInfo[1] < $dk) {
                 $image->resize($_imgInfo[0], $_imgInfo[1])->quality($quality);
             } else {
                 $image->smart_resize($dk, ceil($dk * 0.75))->quality($quality);
             }
             $image->save($_dir . '/' . $fileName, false);
         }
         $_dir = zmf::upDirs($ctime, 'site', $uptype, '600');
         $returnimg = $_dir . '/' . $fileName;
         $data = array('imgsrc' => $returnimg, 'attachid' => $attachid);
         $this->jsonOutPut(1, $data);
     }
 }