我创建了一个zip文件并下载了。但我的问题是我只想下载特定文件而不是根文件夹的完整文件。
我的代码是
$zipname = 'documents.zip';
$zip = new ZipArchive;
$zip->open($zipname, ZipArchive::CREATE);
foreach ($allDocuments as $document) {
$filetopath = public_path().$document;
$filename = explode('/',$document);
$name = end($filename);
$zip->addFile($filetopath,$name);
}
$zip->close();
header('Content-Type: application/zip');
header('Content-disposition: attachment; filename='.$zipname);
header('Content-Length: ' . filesize($zipname));
readfile($zipname);
我只想制作一个只有文件命名的zip文件,而不是任何文件夹,并且具有特定文件而不是根文件夹的所有文件。但我得到了所有文件夹和所有文件。
在$ alldocumnets变量中,我获得了有限的记录,而不是所有记录。 但是在创建zip时,它会获取所有文件。
我不明白我哪里出错了。
答案 0 :(得分:1)
关于目录的问题很明确:只要排除is_dir()== true
的所有内容<?php
$allDocuments = array("a.py","b.py");
$zipname = 'documents.zip';
$zip = new ZipArchive;
$zip->open($zipname, ZipArchive::CREATE);
foreach($allDocuments as $document) {
$filetopath = getcwd().'\\'.$document;
if(!is_dir($filetopath)) {
$filename = explode('/',$document);
$name = end($filename);
$zip->addFile($filetopath,$name);
}
}
$zip->close();
header('Content-Type: application/zip');
header('Content-disposition: attachment; filename='.$zipname);
header('Content-Length: ' . filesize($zipname));
readfile($zipname);
不幸的是,第二部分并不清楚。只要您没有告诉我们您想要排除哪些文件,或者确切的问题是什么,这是无法解决的。