PHP下载文件夹中最新的文件

该PHP代码段展示了如何获取指定目录中最新的文件名及其修改日期,并提供了一个下载功能。首先,它遍历目录获取所有文件,然后按修改日期进行降序排序,最后输出文件供下载。此代码适用于文件管理系统或自动化数据更新场景。
摘要由CSDN通过智能技术生成
//获取最新的文件名和文件修改日期
public function getNewestFile()
    {
        $dir = '/www/filepath/';
        $model = [];
        if (is_dir($dir)) {
            if ($dh = opendir($dir)) {
                $i = 0;
                while (($file = readdir($dh)) !== false) {
                    if ($file != "." && $file != "..") {
                        $files[$i]["name"] = $file;//获取文件名称
                        $files[$i]["time"] = date("Y-m-d H:i:s", filemtime($dir . $file));//获取文件最近修改日期
                        $i++;
                    }
                }
            }
            closedir($dh);
            
            if (!empty($files)) {
                foreach ($files as $k => $v) {
                    $time[$k] = $v['time'];
                }
                array_multisort($time, SORT_DESC, SORT_STRING, $files);//按时间排序
                $model['name'] = $files[0]['name'];
                $model['time'] = date('Ymd', strtotime($files[0]['time']));
            }
        }
        return $model;
    }

//输出文件
public function downModel()
    {
        $param = $this->getNewestFile();
        $file = ‘/www/filepath/’ . $param['name'];
        if (!file_exists($file) || !is_file($file)) {
            return false;
        }
        $fileName = 最新文件' . $param['time'] . '.docx';
        //输出压缩文件提供下载
        header("Cache-Control: max-age=0");
        header("Content-Description: File Transfer");
        header('Content-disposition: attachment; filename=' . $fileName); // 文件名,注意如果文件名带特殊字符可能会导致下载失败,需要使用rawurlencode转换
        header("Content-Type: application/msword");
        header("Content-Transfer-Encoding: binary");
        header('Content-Length: ' . filesize($file));

        @readfile($file);//输出文件;
        exit();
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值