Я попытался создать zip-файл с использованием zip-архива, он отлично работает, хотя zip-файл загружается дважды в две разные папки одновременно, в папку htdocs, где находится исходный код, и папку загрузки по умолчанию из настройки браузера. Есть ли способ предотвратить это? Я только хочу, чтобы загрузить один раз в папку загрузки ...запретить архивировать zip-архив дважды в двух разных папках
$file_names = explode(',', $_REQUEST['files']);
$dir = $_REQUEST['currentdir'];
//Archive name
$archive_file_name="Downloaded_".date("Y-m-d_G-i-s").".zip";
//Download Files path
$file_path=$dir;
//cal the function
zipFilesAndDownload($file_names,$archive_file_name,$file_path);
function zipFilesAndDownload($file_names,$archive_file_name,$file_path)
{
$zip = new ZipArchive();
$res = $zip->open($archive_file_name, ZIPARCHIVE::CREATE | ZIPARCHIVE::OVERWRITE);
if ($res===TRUE) {
//add each files of $file_name array to archive
foreach($file_names as $files)
{
$tt=$file_path."/".$files;
if (file_exists($tt)){
$zip->addFile($tt,$files);
}
else{
return false;
exit;
}
}
$zip->close();
//then send the headers to force download the zip file
header('Content-type: application/zip');
header("Content-Disposition: attachment; filename=\"".basename($archive_file_name)."\"");
header('Pragma: no-cache');
header('Expires: 0');
//header('Content-Length: ' . filesize($archive_file_name));
ob_end_clean();
//flush();
readfile($archive_file_name);
exit;
}
else{
return false;
exit;
}
}
Вы создаете почтовый индекс в папке HTDOCS (PHP сохраняет его там), это причина, почему он там. Вы загружаете его только один раз. –
код должен быть внутри htdocs для запуска, поскольку весь мой PHP-код работает в htdocs ... есть ли какой-нибудь код или способ остановить его создание файла в htdocs? – Annie
Вы можете просто добавить имя каталога к имени файла, после чего оно будет сохранено в указанном каталоге. –