Ejemplo n.º 1
0
 /**
  * 保存上传的文件
  *
  * @example YUN_File_Upload::save($_FILES['fieldname']);
  *
  * @param  array   $data      POST 的文件上传数据
  * @param  string  $saveName
  * @param  string  $savePath
  * @return boolean
  */
 public function save(array $data, $saveName = null, $savePath = null)
 {
     if (!$this->isPostFile($data)) {
         $this->_message = '无效的 POST 数据';
         return false;
     }
     if (isset($data['error']) && $data['error'] != 0) {
         $this->_message = $this->getError($data['error']);
         return false;
     }
     if (!$this->isAllowExtension($data['name'])) {
         $this->_message = '禁止上传该类型的文件';
         return false;
     }
     if (!$this->isAllowSize($data['size'])) {
         $this->_message = "文件大小超出服务器限定的值 ({$this->_config['maxSize']} Kb)";
         return false;
     }
     empty($savePath) && ($savePath = $this->_config['savePath']);
     $mkpath = YUN_Io::mkdir($savePath);
     if ($mkpath === false) {
         $this->_message = "无法创建文件上传目录 '{$savePath}'";
         return false;
     }
     $extension = $this->getExtension($data['name']);
     if (empty($saveName)) {
         $saveName = $this->_config['rename'] ? str_replace('.', '', microtime(true)) . ".{$extension}" : $data['name'];
     } else {
         $saveName = strtolower($saveName);
         // 兼容 win 平台
     }
     $saveFilename = YUN_Io::strip("{$savePath}/{$saveName}");
     if (!@move_uploaded_file($data['tmp_name'], $saveFilename)) {
         $this->_message = '无法从临时目录复制上传文件';
         return false;
     }
     $this->_result = array('filename' => $data['name'], 'filesize' => $data['size'], 'filetype' => $data['type'], 'extension' => $extension, 'savename' => $saveFilename);
     return true;
 }