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); } }