= TB then he can afford to pay me to patch this // code if beyond that is required! :) $sizes = array('B', 'KB', 'MB', 'GB'); $prev_s = end($sizes); foreach ($sizes as $s) { if ($size < 1024) { break; } if ($s != $prev_s) { $size /= 1024; } } if ($s == $sizes[0]) { return sprintf('%01d %s', $size, $s); } else { return sprintf('%01.2f %s', $size, $s); } } // return HTML row for file display function directory_row($file, $show_stats = true) { // get information for $file $is_dir = is_dir($file); $info = stat($file); // keep track of row count to alternating odd/even styles static $row_count; if (!isset($row_count)) { $row_count = 1; } else { $row_count++; } ob_start(); echo ''; // identify appropriate MIME icon to display echo ''; echo ''; // display file information echo '' . basename($file) . ''; if ($show_stats) { echo ''; if ($is_dir) { echo '---'; } else { echo size_human_read($info['size']); } echo ''; echo '' . date('m/d/Y', $info['mtime']) . ''; } else { echo '  '; } echo ''; $r = ob_get_contents(); ob_end_clean(); return $r; } if (!isset($_GET['action'])) return; switch ($_GET['action']) { // return HTML table with directory contents case 'list': // ensure all necessary parameters are available if (!isset($_GET['dir'])) return; // prevent users from traversing outside the base directory $directory = realpath(BASEDIR . $_GET['dir']); if (strpos($directory, BASEDIR) !== 0) return; $ds = array(); // directories $fs = array(); // files if($dir = opendir($directory)) { while($file = basename(readdir($dir))) { if($file == '.' || $file == '..') { continue; } if (is_dir($directory . '/' . $file)) { $ds[] = $file; } else if(is_file($directory . '/' . $file)) { $fs[] = $file; } } closedir($dir); } natcasesort($ds); // natural case-insensitive sort natcasesort($fs); ?>
File/FolderSizeDate
'file')); } else if (is_dir($target)) { echo json_encode(array( 'retType' => 'directory', 'directory' => substr($target, strlen(BASEDIR)))); } } break; } ?>