无法在 codeigniter 中创建 zip 文件
Posted
技术标签:
【中文标题】无法在 codeigniter 中创建 zip 文件【英文标题】:not able to create zip file in codeigniter 【发布时间】:2016-12-13 14:34:53 【问题描述】:下面是生成多个文件的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\pdf\pdffiles\file1.pdf
【问题讨论】:
1 - 您服务器上的文件(下载前)是否也损坏了? 2 - 如果您在addFile
方法中添加第二个参数(文件名),它是否有效?
用文本编辑器打开文件,检查顶部是否有空行。如果是这样,如果您删除它们,它是否会正常化?在这种情况下,请检查您的 php 文件以查看它们在何处返回空行。
@rap-2-h 不,它没有损坏。 2 - 如果您在 addFile 方法中添加第二个参数(文件名),它是否有效? - 是什么意思?
@PathikVejani $zip->addFile($file, 'foo.pdf');
@rap-2-h $file
it 自身文件名
【参考方案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 中。
【讨论】:
是的..这是解决方案..以及如何下载文件? @PathikVejani 你也可以使用FCPATH . 'pdffiles/14816393105-annexc-form.pdf'
。这是绝对路径可以节省输入完整路径。以上是关于无法在 codeigniter 中创建 zip 文件的主要内容,如果未能解决你的问题,请参考以下文章