/** * 初始化smarty模板引擎 */ public function __construct() { $app = Wave::app(); $dir = $app->projectPath . $app->projectName; $config = Wave::app()->config['smarty']; $smarty = new Smarty(); $smarty->left_delimiter = $config['left_delimiter']; $smarty->right_delimiter = $config['right_delimiter']; $smarty->debugging = $config['debugging']; $smarty->caching = $config['caching']; $smarty->cache_lifetime = $config['cache_lifetime']; $smarty->compile_check = $config['compile_check']; $smarty->template_dir = $dir . '/' . $config['template_dir']; $smarty->cache_dir = $dir . '/' . $config['cache_dir']; $smarty->config_dir = $dir . '/' . $config['config_dir']; $smarty->compile_dir = $app->projectPath . $config['compile_dir']; WaveCommon::mkDir($smarty->compile_dir); if ($config['caching']) { WaveCommon::mkDir($smarty->config_dir); } $this->engin = $smarty; }
/** * 上传文件 * @param 文件信息数组 $files ,通常是 $_FILES数组 */ public function upload($files = '') { if ('' === $files) { $files = $_FILES; } if (empty($files)) { $this->error = '没有上传的文件!'; return false; } /* 逐个检测并上传文件 */ $info = array(); if (function_exists('finfo_open')) { $finfo = finfo_open(FILEINFO_MIME_TYPE); } // 对上传文件数组信息处理 $files = $this->dealFiles($files); foreach ($files as $key => $file) { $file['name'] = strip_tags($file['name']); if (!isset($file['key'])) { $file['key'] = $key; } /* 通过扩展获取文件类型,可解决FLASH上传$FILES数组返回文件类型错误的问题 */ if (isset($finfo)) { $file['type'] = finfo_file($finfo, $file['tmp_name']); } /* 获取上传文件后缀,允许上传无后缀文件 */ $file['ext'] = pathinfo($file['name'], PATHINFO_EXTENSION); /* 文件上传检测 */ if (!$this->check($file)) { continue; } /* 生成保存文件名 */ $savename = $this->getSaveName($file); if (false == $savename) { continue; } else { $file['savename'] = $savename; } /* 对图像文件进行严格检测 */ $ext = strtolower($file['ext']); if (in_array($ext, array('gif', 'jpg', 'jpeg', 'bmp', 'png', 'swf'))) { $imginfo = getimagesize($file['tmp_name']); if (empty($imginfo) || $ext == 'gif' && empty($imginfo['bits'])) { $this->error = '非法图像文件!'; continue; } } $saveDir = rtrim($this->savePath, '/') . '/'; WaveCommon::mkDir($saveDir); $savepath = $saveDir . $savename; /* 保存文件 并记录保存成功的文件 */ if (move_uploaded_file($file['tmp_name'], $savepath)) { unset($file['error'], $file['tmp_name']); $info[$key] = $file; } else { $this->error = '上传失败!'; continue; } } if (isset($finfo)) { finfo_close($finfo); } return empty($info) ? false : $info; }
/** * 循环创建目录 * * @param string $dir 文件夹 * @param $mode 文件夹权限 * * @return bool * */ public static function mkDir($dir, $mode = 0777) { if ($dir == '') { return true; } if (is_dir($dir) || @mkdir($dir, $mode)) { return true; } if (!WaveCommon::mkDir(dirname($dir), $mode)) { return false; } return @mkdir($dir, $mode); }