这是我第一次尝试用PHP创建ZIP文件。
我正在做的是,我的PHP将搜索某个目录中的文件,抓取它们并将它们保存到ZIP文件中。然后,zip文件将文件发送到浏览器进行下载。我很亲密,但我被困在某一部分。
这是我的代码:
$zip = new ZipArchive();
if ($zip->open('test.zip', ZIPARCHIVE::CREATE) !== TRUE) {
die ("Could not open archive"); }
$myDirectory = opendir("../folder/plugins/".$id."");
while($entryName = readdir($myDirectory)) { $dirArray[] = $entryName; }
closedir($myDirectory);
$indexCount = count($dirArray);
sort($dirArray);
for($index=0; $index < $indexCount; $index++) {
if (substr("$dirArray[$index]", 0, 1) != "."){
$file = "".$myDirectory."".$dirArray[$index].".zip";
$zip->addFile($file, $file) or die ("cant add file"); ;
echo $dirArray[$index]; echo '</br>';
}}
$zip->close()or die("cant close");
尝试关闭时,我收到'无法关闭'错误。请帮帮我,我在代码中找不到我做错的事。这就是它的印刷:
filename1.png
filename2.png
can't close
:)
答案 0 :(得分:4)
检查以下一行:
$zip->addFile($file, $file)
这是你真正想要达到的目标吗?
答案 1 :(得分:0)
以下是我如何运作:
<?php
$dirArray = array();
/* creates a compressed zip file */
$zip = new ZipArchive;
if ($zip->open('dataminefiles.zip', ZIPARCHIVE::CREATE) !== TRUE) {
die ("Could not open archive");
}
// open the current dir
if ($handle = opendir('.')) {
while (false !== ($entry = readdir($handle))) {
// ignore hidden files
if ($entry != "." && $entry != "..") {
// only zip specific files
if ( substr($entry,-3,3) == "jpg" || substr($entry,-3,3) == "pdf" || substr($entry,-3,3) == "lsx" || substr($entry,-3,3) == "xls" || substr($entry,-3,3) == "doc" || substr($entry,-3,3) == "txt" || substr($entry,-3,3) == "png" || substr($entry,-3,3) == "gif" || substr($entry,-3,3) == "peg" ) {
// if allowed, add them to the array
$dirArray[] = $entry;
}
}
}
closedir($handle);
}
$indexCount = count($dirArray);
sort($dirArray);
// loop through the files and add them to the zip file
for($index=0; $index < $indexCount; $index++) {
$file = "{$dirArray[$index]}";
$zip->addFile($file, $file);
}
// close the zip file
$zip->close();
?>