<?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 Object([status] => 0 [statusSys] => 0 [numFiles] => 12 [filename] => / var / www / bigb / ajax / images_24-12 -2012.zip[コメント]=>)
ステータスゼロは、zipの作成中にエラーが発生しなかったことを説明しています(参照:http ://www.php.net/manual/en/zip.constants.php )
私は投稿を参照しました:1)ウェブサイトの単一のディレクトリからすべての画像をダウンロードします 2)phpを使用してzipファイルを作成し、ユーザーがダウンロードした後にそれを削除するにはどうすればよいですか? 3)http://www.9lessons.info/2012/06/creating-zip-file-with-php.html
3つ目は私を最も助け、他の2つでは23としてステータスを取得していました。
問題:zipを作成できますが、ダウンロードに問題はありませんが、zipを開くと、内部にファイルが表示されませんが、zipにはmb単位のメモリがあります。
私を助けてください...
更新:エラー23は、print_r / echoが原因で発生するか、同じファイルを上書きしようとしたために発生します。
Update2:問題は解決しました。コードをメインフォルダーに移動し、パスを(uploads /)に変更すると、RecursiveDirectoryIteratorのパス(つまり../uploads/)が原因で、すべてが正常に機能し始めました。称賛!!!