我正在使用标准CI zip库读取目录并创建zip文件以供下载,但是当我在Windows中测试时,我得到:
在OS X中,zip解压缩一个cpgz文件,然后解压缩为zip文件-无限
我的CI功能:
public function downloadPackage($unique) {
$this->load->library('zip');
$text = $this->syndication_m->getTextForContent($unique);
$path = '/var/www/html/uploads/'.$unique.'/';
if(file_exists($path."copy-".$unique.".txt")) {
unlink($path."copy-".$unique.".txt");
$fp = fopen($path."copy-".$unique.".txt","wb");
fwrite($fp,$text);
fclose($fp);
}
$this->zip->read_dir($path);
$this->zip->download('dl-'.$unique.'.zip');
}
有谁能帮我修复或建议在这里做什么?谢谢
编辑
public function downloadPackage($unique) {
$this->load->library('zip');
$path = '/var/www/html/uploads/'.$unique.'/';
$text = $this->syndication_m->getTextForContent($unique);
$this->zip->read_dir($path, TRUE);
$this->zip->add_data('copy-'.$unique.'.txt', $text->synd_text);
$this->zip->download('dl-'.$unique.'.zip');
}
5条答案
按热度按时间1szpjjfi1#
我刚刚遇到了一个非常类似的问题,下载的zip文件被损坏,这是什么解决了我的问题:
我在
$this->zip->download()
行之前调用了ob_end_clean()
函数。zengzsys2#
据我所知和codeigniter's documentation所说:
$path = '/var/www/html/uploads/'.$unique.'/';
基本上,您正在创建一个zip文件夹,从
/var
开始,以$unique
文件夹中的文件结束,肯定会出错...我建议将第二个参数设置为false,如文档中所指定的:
$this->zip->read_dir($path, FALSE)
**$unique
",然后所有子文件夹都正确存储在其中,但不会包括文件夹/var/www/html/uploads
。*为了更好地控制数据,我还建议/推荐使用以下资源:
$this->zip->add_data()
,而不是fopen()
和$this->zip->read_dir()
示例:
除非您想将
$unuqie
目录中的任何文件添加到zip中,否则$this->zip->read_dir()
没有任何用处。tnkciper3#
在写文件的地方使用fopen尝试使用“$this-〉zip-〉add_data($text);“并确保$path指向的目录(子目录)没有任何软链接(快捷方式)文件。
除了这种尝试,不包括空文件夹在zip文件有时它会产生这些问题。
3phpmpom4#
我有类似的问题。每当我正在创建新的zip文件和解压**.zip文件,新文件正在创建为.cpgz**。这是由于我的zip文件没有正确创建发生。这意味着它是创建为损坏的zip文件。
同时我得到**致命错误:允许的内存大小为134217728字节已耗尽(尝试分配262144字节)**错误。一旦我解决了这个胎儿错误,我的压缩和解压问题得到解决。
我解决了以下错误
致命错误:已用尽允许的134217728字节内存大小(尝试分配262144字节)
添加到index.php
ini_set('内存限制','-1');
balp4ylt5#
使用ob_end_clean()函数删除最上面的输出缓冲区及其所有内容。函数。