Я новичок в PHP и пытаюсь создать функцию ZIP, которая вызывается через ajax и загружается пользователю. Я получаю положительный ответ с zip, но потоковая передача выдает мне ошибку для файла (): stat failed for ../test.zip, а также не удалось прочитать файл для открытия потока, такого файла или каталога нет на php-странице. Вот мой код ниже - я довольно сильно обжегся и не могу найти ответ, который имеет смысл для моей ситуации.
<?php
require("../../common.php");
ini_set('display_startup_errors',1);
ini_set('display_errors',1);
error_reporting(-1);
$thisdir = " ";
$zip = new ZipArchive();
$filename = "../test.zip";
if ($zip->open($filename, ZipArchive::CREATE)!==TRUE) {
exit("cannot open <$filename>\n");
}
$zip->addFromString('insert.pdf' . time(), "#1 This is a test string added as testfilephp.txt.\n");;
$zip->addFile($filename . "../../../folder/pdf_folder/");
echo "numfiles: " . $zip->numFiles . "\n";
echo "status:" . $zip->status . "\n";
echo $filename;
//$size = filesize($zip->filename);
$zip->close();
header("Content-type: application/zip");
header("Content-Disposition: attachment; filename=$filename");
header("Content-length: " . filesize($filename));
header("Pragma: no-cache");
header("Expires: 0");
readfile("$filename");
?>
спасибо за любую помощь или руководство
****** редактировать здесь ошибка для кода
Предупреждение. /zipAJAX.php в строке 21
Предупреждение: readfile(../test.zip): не удалось открыть поток: Нет такого файла или каталога в /var/---/----/---/----/control/ajax/zipAJAX.php в строке 24
$zip->addFile('../test.zip../../../folder/pdf_folder/')
? Должны быть два аргумента, разделенные запятой? Также мне не нравятся несоответствия/двойственность$filename
и$zip->filename
- возможно, просто избегайте этого, я понимаю, что вы, вероятно, занимались отладкой. - person ficuscr   schedule 27.06.2018