以下是生成多个文件的zip码的代码:
<?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中\ PD˚F\ pdffiles \ file1.pdf
答案 0 :(得分:1)
您可以在addFile
方法中指定文件名。这并不明显,因为周围没有明显的例子,但您可以使用$localname
(第二个参数)来定义和控制zip中的文件/目录结构。如果您不希望文件包含在其绝对目录树中,请使用它。
以下是使用basename
的工作示例:
$file1 = 'D:/xampp/htdocs/pdf/pdffiles/14816393105-annexc-form.pdf';
// ...
$zip->addFile($file1, basename($file1));
basename
会返回路径的尾随名称组件,因此它会保留14816393105-annexc-form.pdf
并将其添加到您的zip中。