这是我在互联网上找到的代码,旨在创建整个文件夹的 .zip 并下载。
我想做一些改变,但我尝试的一切都不起作用。我想要的是:
使其通用(即我想
makezip.php
在根文件夹中拥有它。我有一个文件管理器,每次我从某个位置调用这个脚本(例如www.domain.com/files/media/images/
它获取那个文件夹)。下载后删除 zip(我认为我做得很好,使用命令,
unlink
但我不确定这是正确的方法。删除该文件
.
和..
zip 获得的文件夹。date.hour.directory.zip
使用名称(ex )导出 zip18Sep2013_13-26-02_images.zip
。我试图这样做,$fd = getcwd();
$filename = date("dMY_H:i:s").'_'.$fd.'.zip';
但没有奏效,它只获取 $fd 变量。
我知道它不应该给你所有的代码并期望你会查看它或调试它,但我已经尝试了一切,但没有任何效果。我正在自学,我是 php 的新手。
此致
<?php
function download($file) {
header('Content-Description: File Transfer');
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename='.basename($file));
header('Content-Transfer-Encoding: binary');
header('Expires: 0');
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header('Pragma: public');
header('Content-Length: ' . filesize($file));
ob_clean();
flush();
readfile($file);
unlink($file);
exit;
}
$directory = '.';
$files = scandir($directory);
if(empty($files))
{
echo("You haven't selected any file to download.");
}
else
{
$zip = new ZipArchive();
$filename = date("dMY_H:i:s").'_arquivo.zip'; //adds timestamp to zip archive so every file has unique filename
if ($zip->open($filename, ZIPARCHIVE::CREATE)!==TRUE) { // creates new zip archive
exit("Cannot open <$filename>\n");
}
$N = count($files);
for($i=0; $i < $N; $i++)
{
$zip->addFile($files[$i], $files[$i]); //add files to archive
}
$numFiles = $zip->numFiles;
$zip->close();
$time = 8; //how long in seconds do we wait for files to be archived.
$found = false;
for($i=0; $i<$time; $i++){
if($numFiles == $N){ // check if number of files in zip archive equals number of checked files
download($filename);
$found = true;
break;
}
sleep(1); // if not found wait one second before continue looping
}
if($found) { }
else echo "Sorry, this is taking too long";
}
?>