示例#1
0
 /**
  * 上传保存文件操作
  * @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;
 }
示例#2
0
 /**
  * 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);
 }