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, '数据验证错误'); } } }
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); } }