开发者社区> 问答> 正文

用PHP下载多个文件

我有一个页面正在尝试使用PHP下载多个文件。

如果我具有完整的文件路径,则可以这样下载单个文件:

header('Content-Description: File Transfer');
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename="'.basename($filepath).'"');
header('Expires: 0');
header('Cache-Control: must-revalidate');
header('Pragma: public');
header('Content-Length: ' . filesize($filepath));
flush();
readfile($filepath);
exit;

但是,我希望能够获取特定文件夹中名称在日期范围内的所有文件。因此,我的文件名都具有相同的格式,即/folder/ddmmyyxxxx.pdf,并且我有一个表格,其中包含文件夹和两个日期。

$from_date = $_POST['from_date'];
$to_date = $_POST['to_date'];

$period = new DatePeriod(
    new DateTime($from_date),
    new DateInterval('P1D'),
    new DateTime($to_date)
);

foreach ($period as $date){
    $formatted_date = $date->format('dmy');
    if(glob('../docs/'.$folder.'/'.$formatted_date.'*.*')){
        // download code here
    }
}

下载代码使用硬编码的文件名,但是当我尝试遍历日期时,即使找到$ formatted_date和$ folder变量给出了文件名的开头,它也找不到任何文件。

我在做什么错或者有更好的方法来实现此目的,以使它们都一起下载到一个文件夹中,而不是遍历它们并单独下载。

展开
收起
社区秘书 2019-12-10 13:56:10 686 0
0 条回答
写回答
取消 提交回答
问答分类:
PHP
问答地址:
问答排行榜
最热
最新

相关电子书

更多
PHP 2017.北京 全球开发者大会——高可用的PHP 立即下载
PHP安全开发:从白帽角度做安全 立即下载
复杂PHP系统性能瓶颈排查及优化 立即下载