【问题标题】:Display files in a folder along with the date modified of those files显示文件夹中的文件以及这些文件的修改日期
【发布时间】:2017-12-07 14:22:45
【问题描述】:
 <?php 
    $filename = 'file:///C:/Users/xxx/Desktop/2017/cdr'
    $files = array();
    if ($handle = opendir($filename)) {
        while (false !== ($file = readdir($handle))) {
            if ($file != "." && $file != "..") {
               $files[filemtime($file)] = $file;
            }
        }
        closedir($handle);

        // sort
        ksort($files);
        // find the last modification
        $reallyLastModified = end($files);

        foreach($files as $file) {
            $lastModified = date('F d Y, H:i:s',filemtime($file));
            if(strlen($file)-strpos($file,".swf")== 4){
               if ($file == $reallyLastModified) {
                 // do stuff for the real last modified file
               }
               echo "<tr><td><input type=\"checkbox\" name=\"box[]\"></td><td><a href=\"$file\" target=\"_blank\">$file</a></td><td>$lastModified</td></tr>";
            }
        }
    }

我一直在尝试使用此代码列出和显示文件夹中的文件以及修改日期。我不断收到错误filemtime(): stat failed

我正在尝试使用以下代码将它们列为数组作为替代

    <?php
    $folder = 'file:///C:/Users/xxx/Desktop/2017/cdr';
    $backups = array();
    foreach (scandir($folder) as $node) {
        $nodePath = $folder . DIRECTORY_SEPARATOR . $node;
        if (is_dir($nodePath)) continue;
        $backups[$nodePath] = filemtime($nodePath);

    }
    ksort($backups);
    print_r($backups);

当我运行这段代码时,我得到下面的结果,我不知道数字代表什么。

[file:///C:/Users/xxx/Desktop/2017/cdr\2017_0622_1500.raw] =>1498136278
[file:///C:/Users/xxx/Desktop/2017/cdr\2017_0622_1600.cdr] =>1498136430
[file:///C:/Users/xxx/Desktop/2017/cdr\2017_0622_1600.raw] =>1498139955
[file:///C:/Users/xxx/Desktop/2017/cdr\2017_0622_1700.raw] =>1498142424

我想要实现的是能够在 CDR 中显示文件及其修改日期。

【问题讨论】:

  • 为什么要添加file:///?您是否尝试通过网络访问本地文件?您是否尝试从其他计算机访问文件?
  • @Álvaro González。尝试从计算机访问文件
  • 然后只使用路径(例如 /home/user/file.txt 或 C:\files\file.txt,具体取决于您的操作系统)。 file:/// 仅在网络浏览器中用于打开本地文件。
  • @ADyson。我仍然得到 Warning: filemtime(): stat failed for
  • 可能是您的文件路径错误,或者您对该文件没有足够的权限。执行 PHP 的服务器上是否肯定存在具有该路径的文件?运行PHP的账号是否有权限读取文件/文件夹

标签: php php-5.3 php-5.6


【解决方案1】:
<?php

    function cmp($a, $b) {
        if (filemtime($a) == filemtime($b))
            return 0;

        return (filemtime($a) < filemtime($b)) ? -1 : 1;
    }


    $files = glob("/Users/xxx/Desktop/2017/cdr/*.cdr");
    usort($files, "cmp");

    foreach($files as $file)
        //echo $file . "<br />";
        echo "$file was last modified: " . date ("d-m-Y H:i:s.", filemtime($file))."\n";
?>

这似乎奏效了。输出看起来像这样。

/2017/cdr/2017_0330_1300.cdr 最后修改时间:30-03-2017 10:53:23。 /2017/cdr/2017_0330_1500.cdr 最后修改时间:30-03-2017 12:18:05。 /2017/cdr/2017_0330_1600.cdr 最后修改时间:30-03-2017 13:55:21。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-01
    • 1970-01-01
    • 2013-02-18
    • 2022-01-04
    • 2013-01-12
    相关资源
    最近更新 更多