/** * 上传保存文件操作 * @param $root * @param $post * @param $file * @param bool $isNeedCheckSignature * @return bool */ public static function create($root, $post, $file, $isNeedCheckSignature = false) { Yii::trace(Yii::t('api', 'Begin to process {class}::{function}', array('{class}' => "MUtils", '{function}' => __FUNCTION__)), "miniyun.api"); ob_start(); ob_end_clean(); $key = $post["key"]; $fileName = $post["Filename"]; // 检查错误,在此之前,已经通过post请求将参数传入到此 if ($file["file"]["error"] > 0) { Yii::log(Yii::t("api", "Request is Error, file:'{$file["file"]["error"]}'"), CLogger::LEVEL_ERROR, "miniyun.api"); return false; } // 参数检查 if (strlen(trim($key)) <= 0 || strlen(trim($fileName)) <= 0) { Yii::log(Yii::t("api", "Request is Error, file_name:'{$fileName}'"), CLogger::LEVEL_ERROR, "miniyun.api"); return false; } // $key 必须包含 / , ${filename} if (is_bool(strpos(trim($key), "/")) || is_bool(strpos(trim($key), "\${filename}"))) { Yii::log(Yii::t("api", "Request is Error, file_name:'{$fileName}'"), CLogger::LEVEL_ERROR, "miniyun.api"); return false; } // 全路径 $path = $root . str_replace("\${filename}", $fileName, $key); // 确保需要合并的文件不存在 if (file_exists($path)) { return true; } // 目录不存在,就创建 $dir = dirname($path); if (file_exists($dir) == false) { $dirname = dirname($path); MUtils::MkDirs($dirname); } // 移动临时文件 move_uploaded_file($file["file"]["tmp_name"], $path); // // 检查文件signature是否与传入的一致 // if ($isNeedCheckSignature) { if (MUtils::checkSignature($path, PYTHON_PATH, $fileName) == false) { MUtils::RemoveFile($path); Yii::log(Yii::t("api", "signature is not same , file_name:'{$fileName}'"), CLogger::LEVEL_ERROR, "miniyun.api"); return false; } } Yii::trace(Yii::t('api', 'end to process {class}::{function}', array('{class}' => "MUtils", '{function}' => __FUNCTION__)), "miniyun.api"); return true; }
/** * delete头像 * @param * @return string */ public function deleteAvatar($avatar) { $userId = $this->user['id']; $file = MiniHttp::getMiniHost() . "static/thumbnails/avatar/" . $avatar; MUtils::RemoveFile($file); $result = MiniUserMeta::getInstance()->deleteAvatar($userId, $avatar); return array(success => $result); }