无法在codeigniter中创建zip文件

时间:2016-12-13 14:34:53

标签: php codeigniter download zip zipfile

以下是生成多个文件的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

1 个答案:

答案 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中。