Пример #1
0
 /**
  * 初始化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;
 }
Пример #2
0
 /**
  * 上传文件
  * @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;
 }
Пример #3
0
 /** 
  * 循环创建目录
  * 
  * @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);
 }