Ниже приведен код для создания архива из нескольких файлов:
<?php
$file1 = 'D:/xampp/htdocs/pdf/pdffiles/14816393105-annexc-form.pdf';
$file2 = 'D:/xampp/htdocs/pdf/pdffiles/14816393105-resident-form.pdf'
$files = array($file1,$file2);
$zipname = time().'-file.zip';
$zip = new ZipArchive;
$zip->open($zipname, ZipArchive::CREATE);
foreach ($files as $file) {
$zip->addFile($file);
}
$zip->close();
header('Content-Type: application/zip');
header('Content-disposition: attachment; filename='.$zipname);
header('Content-Length: ' . filesize($zipname));
readfile($zipname);
?>
Этот код создает ZIP-файл, но он поврежден.
РЕДАКТИРОВАТЬ:
zip file is created but if i extract it then it is from the D:/ drive. Means zip file contains this:
XAMPP \ HTDOCS \ П.Д. е \ PDF-файлов \ file1.pdf
Вы можете указать имя файла в addFile
метод. Это не очевидно, поскольку вокруг нет заметных примеров, но вы можете использовать $localname
(второй параметр) для определения и управления структурой файла / каталога внутри zip. Используйте его, если вы не хотите, чтобы файлы были включены в их абсолютное дерево каталогов.
Вот рабочий пример использования basename
:
$file1 = 'D:/xampp/htdocs/pdf/pdffiles/14816393105-annexc-form.pdf';
// ...
$zip->addFile($file1, basename($file1));
basename
возвращает конечный компонент имени пути, поэтому он просто сохранит 14816393105-annexc-form.pdf
и добавьте его в свой почтовый индекс.
Других решений пока нет …