0

私は単純なウェブサイトの変更に取り組んでいます。この Web サイトには、ダウンロード可能なクライアント ファイルを表示するページがあります (該当する場合)。現時点では、これらのファイルはランダムな順序であり、具体的な詳細はありません。それらが利用可能になったタイムスタンプに基づいて、それらを降順で表示できるようにしたいと思います。また、ファイルサイズも含まれます。これは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 などの形式ではありません。適合するようにフォーマットする関数があります。Googleの「ファイルサイズ形式 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 に答える