Example #1
0
 /**
  * 获取上传的文件信息
  * @access public
  * @param string|array $name 名称
  * @return null|array|\think\File
  */
 public function file($name = '')
 {
     if (empty($this->file)) {
         $this->file = isset($_FILES) ? $_FILES : array();
     }
     if (is_array($name)) {
         return $this->file = array_merge($this->file, $name);
     }
     $files = $this->file;
     if (!empty($files)) {
         // 处理上传文件
         $array = array();
         foreach ($files as $key => $file) {
             if (is_array($file['name'])) {
                 $item = array();
                 $keys = array_keys($file);
                 $count = count($file['name']);
                 for ($i = 0; $i < $count; $i++) {
                     if (empty($file['tmp_name'][$i])) {
                         continue;
                     }
                     $temp['key'] = $key;
                     foreach ($keys as $_key) {
                         $temp[$_key] = $file[$_key][$i];
                     }
                     $obj = new File($temp['tmp_name']);
                     $item[] = $obj->setUploadInfo($temp);
                 }
                 $array[$key] = $item;
             } else {
                 if ($file instanceof File) {
                     $array[$key] = $file;
                 } else {
                     if (empty($file['tmp_name'])) {
                         continue;
                     }
                     $obj = new File($file['tmp_name']);
                     $array[$key] = $obj->setUploadInfo($file);
                 }
             }
         }
         if (strpos($name, '.')) {
             list($name, $sub) = explode('.', $name);
         }
         if ('' === $name) {
             // 获取全部文件
             return $array;
         } elseif (isset($sub) && isset($array[$name][$sub])) {
             return $array[$name][$sub];
         } elseif (isset($array[$name])) {
             return $array[$name];
         }
     }
     return null;
 }