0

我正在修改一个简单的网站。该网站有一个页面显示可供下载的客户文件(如果适用)。目前,这些文件只是按随机顺序排列,没有具体细节。我希望能够根据它们可用的时间戳按降序排列它们。还包括它们的文件大小。这是使用 php 来显示文件,在显示它们之前是否需要对目录进行排序?如果是这样,那将是一个单独的脚本,何时运行?或者我可以对它们进行排序,因为它们显示在以下代码中?

<div id="f2">
<h3>Files Available for Download</h3>
<p>
<?php
// list contents of user directory
if (file_exists($USER_DIRECTORY)) {
    if ($handle = opendir($USER_DIRECTORY)) {
        while (false !== ($entry = readdir($handle))) {
            if ($entry != "." && $entry != "..") {
                echo "<a href='download_file.php?filename=".urlencode($entry)."'>".$entry."</a><br/>";
            }
        }
    closedir($handle);
    }
}

?>
</p>

</div>

对 php 来说非常新,所以任何帮助表示赞赏。

4

1 回答 1

1

这是一个可能有帮助的片段。

href从指定的每个文件或文件扩展名中提取。修改以适应。

它可以很容易地更改为usort(). 查阅 PHP 手册。

另见arsort()函数。查阅 PHP 手册。

文件大小也包括在内,但它没有被格式化为字节、kb 等。有一些函数可以格式化它以适应它。谷歌“文件大小格式 php”。此链接包含该信息。

<?php

// You can use the desired folder to check and comment the others.
// foreach (glob("../downloads/*") as $path) { // lists all files in sub-folder called "downloads"
foreach (glob("test/*") as $path) { // lists all files in folder called "test"
//foreach (glob("*.php") as $path) { // lists all files with .php extension in current folder
    $docs[$path] = filectime($path);
} asort($docs); // sort by value, preserving keys

foreach ($docs as $path => $timestamp) {
    print date("d M. Y: ", $timestamp);
    print '<a href="'. $path .'">'. basename($path) .'</a>' . " Size: " . filesize($path) .'<br />';
}
?>

从该链接中提取http://codebyte.dev7studios.com/post/1590919646/php-format-filesize,如果它不再存在:

function filesize_format($size, $sizes = array('Bytes', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'))
{
    if ($size == 0) return('n/a');
    return (round($size/pow(1024, ($i = floor(log($size, 1024)))), 2) . ' ' . $sizes[$i]);
}
于 2013-08-07T17:23:24.083 回答