<?php
$error = "";
$file_folder = "temp/";
// folder to load files
if (extension_loaded('zip')) {
// Checking ZIP extension is available
$zip = new ZipArchive();
// Load zip library
$zip_name = "images_".date("d-m-Y") . ".zip";
// Zip name
if ($zip -> open($zip_name, ZIPARCHIVE::CREATE) !== TRUE) {
// Opening zip file to load files
$error .= "* Sorry ZIP creation failed at this time";
}
$iterator = new RecursiveIteratorIterator(new RecursiveDirectoryIterator("../uploads/"));
$files = iterator_to_array($iterator, true);
foreach ($iterator as $file) {
$zip -> addFile($file_folder . $file);
// Adding files into zip
}
print_r($zip);
//echo $zip_name;
if (file_exists($file_folder.$zip_name)) {
// push to download the zip
header('Content-type: application/zip');
header('Content-Disposition: attachment; filename="' . $zip_name . '"');
readfile($zip_name);
// remove zip file is exists in temp path
unlink($zip_name);
} else {
echo "error";
}
$zip -> close();
//} else
// $error .= "* Please select file to zip ";
} else
$error .= "* You dont have ZIP extension";
?>
我尝试输出$ zip对象并获得以下响应: ZipArchive对象([status] =&gt; 0 [statusSys] =&gt; 0 [numFiles] =&gt; 12 [filename] =&gt; /var/www/bigb/ajax/images_24-12-2012.zip [comment] = &gt;)
Status Zero解释了创建zip时没有错误(参考:http://www.php.net/manual/en/zip.constants.php)
我推荐了帖子: 1)Download all images from a single directory of a website 2)How to create a zip file using php and delete it after user downloads it? 3)http://www.9lessons.info/2012/06/creating-zip-file-with-php.html
第三个帮助了我最多,另外2个我获得了23的状态。
问题:我可以创建一个zip&amp;没有问题下载它,但当我打开拉链时,我看不到里面的任何文件,但是拉链有mbs内存。
请帮帮我......
更新:因为print_r / echo和/或尝试覆盖同一文件而发生错误23。
Update2:问题已解决。这是由于RecursiveDirectoryIterator中的路径(即../uploads/),一旦我将代码移动到主文件夹并将路径更改为(uploads /),所有内容都开始正常工作。荣誉!
答案 0 :(得分:1)
这是由于RecursiveDirectoryIterator中的路径(即../uploads/),一旦我将代码移动到主文件夹并将路径更改为(uploads /),一切都开始正常工作。奖励!!!
答案 1 :(得分:0)
我认为您向$zip->addFile()
提供的文件路径不正确。您无需向$file
追加任何内容。以下工作:
foreach ($iterator as $file) {
$zip -> addFile($file);
}
在您的情况下,$file
将包含../uploads/file.ext
等文件的确切相对路径。