我编写了一个方法来创建一个zip条目并重写它,如果第二次调用此函数但它不起作用。这是我的代码:
public function zipFile($filepath,$fileName){
$zip = new ZipArchive;
$zip_name = $fileName.'.zip';
echo "$zip_name";
if($zip->open($zip_name, ZIPARCHIVE::OVERWRITE)===TRUE) {
$zip->addFile($filepath,$fileName.'.csv');
$zip->close();
echo 'ok';
} else {
echo 'failed';
}
return '/home/daily_reports/'.$zip_name;
}
我的逻辑缺少什么。如果再次调用该方法,我想用新的文件替换
答案 0 :(得分:1)
如果zip文件存在,可能先尝试显式删除它。覆盖选项可能无法按预期运行。
clearstatcache();//For good measure clear out any cached file paths
$file = "{$filepath}/{$fileName}"
if(file_exists($file)){
unlink($file);
}
然而,我在使用php中的内置zip功能时遇到了一些神秘的问题,特别是在平台差异,性能和内存问题上。我更喜欢通过php压缩命令行上的文件。
在linux / osx上:
$cmd = "zip archivefile file1 file2";
exec($cmd);
在Windows上使用7zip,也可以从命令行使用。 http://www.dotnetperls.com/7-zip-examples
$cmd = "7za.exe a archivefile.7z file1 file2";
exec($cmd);
从技术上讲,你不需要安装7zip,你只需要独立的exe,但你可能需要先安装它才能获得exe。 http://www.7-zip.org/download.html