php
如下的代碼,如何改成按檔案名稱排序。下面的頁面 list.php是可以列出c:\filelist裡的檔案,可以需要用檔案名稱來排序,另外,想多加一個動作叫Open,是在瀏覽器開啟檔案,不是下載。謝謝!
error_reporting(0);
$basedir = "c:/filelist";
if(!is_dir($basedir)) $basedir = dirname(__FILE__);
$file_name = $_GET['downfile'];
if(!empty($file_name)){
$file_dir = $basedir . "/" . $file_name;
if(dirname(realpath($file_dir)) < $basedir){
echo "Permission Denied!";
exit;
}
if (!file_exists($file_dir)) {
echo "File Not Found!";
exit;
} else {
$file = fopen($file_dir,"r");
Header("Content-type: application/octet-stream");
Header("Accept-Ranges: bytes");
Header("Accept-Length: ".filesize($file_dir));
Header("Content-Disposition: attachment; filename=" . $file_name);
echo fread($file,filesize($file_dir));
fclose($file);
exit;
}
}
header("Content-type: text/html; charset=utf-8");
$requestDir = $_GET['dir'];
if(empty($requestDir)){
$dir = $basedir;
}else{
$dir = $basedir . "/" . $requestDir;
}
$dir = realpath($dir);
if($dir < $basedir) $dir = $basedir;
?>
File Listing
$predir = realpath($dir . "/../"); if($predir > $basedir) $predir = str_replace($basedir . "/","",$predir); if($predir == $basedir) $predir = "."; if($dir > $basedir) echo "Up Level"; ?> |
$dirs=@opendir($dir); $count = 0; while($file=@readdir($dirs)) { $b="$dir/$file"; $a=@is_dir($b); if($a=="1"){ if($file!=".."&&$file!=".") { if($count < 1){ $count ++; echo "
\n"; echo "
| Folder | \n"; echo "
\n"; } echo "
\n"; echo "
| $basedir ? str_replace($basedir . "/",'',$dir . "/") : '') . urlencode($file)."\">$file | \n"; echo "
\n"; } } } @closedir($dirs); ?>
| Filename |
Date |
Size |
Action |
$dirs=@opendir($dir); while ($file=@readdir($dirs)) { $b="$dir/$file"; $a=@is_dir($b); if($a=="0"){ $size=@filesize("$dir/$file"); $size=$size/1024 ; $size= @number_format($size,2); $lastsave=@date("Y-n-d H:i:s",filemtime("$dir/$file")); echo "
\n"; echo "
| $file | \n"; echo "
$lastsave | \n"; echo "
$size KB | \n"; echo "
$basedir ? str_replace($basedir . "/",'',$dir . "/") : '').urlencode($file)."\">Download | \n"; echo "
\n"; } } @closedir($dirs); ?>
回複討論(解決方案)
不用目錄函式,改用 glob 函數。結果就是排序的
當然你也可以附加 GLOB_NOSORT 參數阻止這一行為
請問該改哪裡? 如何改呢? 謝謝!