| <?php | 
| /** | 
|  * 获取已上传的文件列表 | 
|  * User: Jinqn | 
|  * Date: 14-04-09 | 
|  * Time: 上午10:17 | 
|  */ | 
| include "Uploader.class.php"; | 
|   | 
| /* 判断类型 */ | 
| switch ($_GET['action']) { | 
|     /* 列出文件 */ | 
|     case 'listfile': | 
|         $allowFiles = $CONFIG['fileManagerAllowFiles']; | 
|         $listSize = $CONFIG['fileManagerListSize']; | 
|         $path = $CONFIG['fileManagerListPath']; | 
|         break; | 
|     /* 列出图片 */ | 
|     case 'listimage': | 
|     default: | 
|         $allowFiles = $CONFIG['imageManagerAllowFiles']; | 
|         $listSize = $CONFIG['imageManagerListSize']; | 
|         $path = $CONFIG['imageManagerListPath']; | 
| } | 
| $allowFiles = substr(str_replace(".", "|", join("", $allowFiles)), 1); | 
|   | 
| /* 获取参数 */ | 
| $size = isset($_GET['size']) ? htmlspecialchars($_GET['size']) : $listSize; | 
| $start = isset($_GET['start']) ? htmlspecialchars($_GET['start']) : 0; | 
| $end = $start + $size; | 
|   | 
| /* 获取文件列表 */ | 
| $path = $_SERVER['DOCUMENT_ROOT'] . (substr($path, 0, 1) == "/" ? "":"/") . $path; | 
| $files = getfiles($path, $allowFiles); | 
| if (!count($files)) { | 
|     return json_encode(array( | 
|         "state" => "no match file", | 
|         "list" => array(), | 
|         "start" => $start, | 
|         "total" => count($files) | 
|     )); | 
| } | 
|   | 
| /* 获取指定范围的列表 */ | 
| $len = count($files); | 
| for ($i = min($end, $len) - 1, $list = array(); $i < $len && $i >= 0 && $i >= $start; $i--){ | 
|     $list[] = $files[$i]; | 
| } | 
| //倒序 | 
| //for ($i = $end, $list = array(); $i < $len && $i < $end; $i++){ | 
| //    $list[] = $files[$i]; | 
| //} | 
|   | 
| /* 返回数据 */ | 
| $result = json_encode(array( | 
|     "state" => "SUCCESS", | 
|     "list" => $list, | 
|     "start" => $start, | 
|     "total" => count($files) | 
| )); | 
|   | 
| return $result; | 
|   | 
|   | 
| /** | 
|  * 遍历获取目录下的指定类型的文件 | 
|  * @param $path | 
|  * @param array $files | 
|  * @return array | 
|  */ | 
| function getfiles($path, $allowFiles, &$files = array()) | 
| { | 
|     if (!is_dir($path)) return null; | 
|     if(substr($path, strlen($path) - 1) != '/') $path .= '/'; | 
|     $handle = opendir($path); | 
|     while (false !== ($file = readdir($handle))) { | 
|         if ($file != '.' && $file != '..') { | 
|             $path2 = $path . $file; | 
|             if (is_dir($path2)) { | 
|                 getfiles($path2, $allowFiles, $files); | 
|             } else { | 
|                 if (preg_match("/\.(".$allowFiles.")$/i", $file)) { | 
|                     $files[] = array( | 
|                         'url'=> substr($path2, strlen($_SERVER['DOCUMENT_ROOT'])), | 
|                         'mtime'=> filemtime($path2) | 
|                     ); | 
|                 } | 
|             } | 
|         } | 
|     } | 
|     return $files; | 
| } |