
当我试图打开我的PHP Zip文件生成的zip文件时,显示一个警报
“windows无法打开文件夹,压缩文件夹的”文件名“无效。 windows资源pipe理器中打开错误。
但是我可以通过7-zip打开文件。 由于某些原因,我必须确保压缩文件可以通过windows资源pipe理器打开。 当我生成压缩文件时是否有任何问题? 请帮忙!
function create_a_zip($files = array(),$dest = '',$root_folder,$overwrite = false) { if(file_exists($dest) && !$overwrite) { return false; } $valID_files = array(); if(is_array($files)) { foreach($files as $file) { if(file_exists($file)) { $valID_files[] = $file; } } } if(count($valID_files)) { $zip = new ZipArchive(); if($zip->open($dest,$overwrite ? ZIPARCHIVE::OVERWRITE : ZIPARCHIVE::CREATE) !== true) { return false; } foreach($valID_files as $valID_file) { if(is_dir($valID_file) === true){ foreach(glob($valID_file . '/*') as $file){ $zip->addfile($file,$root_folder . $file); } }else if (is_file($valID_file) === true){ $zip->addfile($valID_file,$root_folder . $valID_file); } } $zip->close(); return file_exists($dest); } else { return false; } }
为什么相同的内容压缩到不同的档案,甚至用`-X`?
在linux中,在一个命名的zip文件中压缩多个目录
压缩文件和打印到标准输出
帮助创buildZIP文件windows不会阻止
Internet Explorer 8 + Deflate
zip和解压缩文件c ++
Gzip不在本地开发
如何创build具有22B的最小大小(空)的zip文件?
通过批量文件定期通过电子邮件发送文件
在postrotate脚本之后,logrotate压缩文件
对我来说,解决的办法是在输出zip文件内容之前使用ob_end_clean() (正如@Ywis在注释中所指出的那样)…
ob_end_clean(); readfile($zipfilename); // outputs zip file's content
即使你以前没有输出任何字符
我认为这个问题来源于:
$zip->addfile($file,$file);
除非你的PHP脚本和你要添加到zip的文件在同一个目录下,否则你需要包含文件路径。 addfile中的第二个参数是zip文件中的文件的名称,所以如果你的$ file var包含路径,这就是问题可能来自哪里。 尝试将代码更改为:
$filenameonly = preg_replace("/(.*)/?([^/]+)/","$2",$file); $zip->addfile($file,$filenameonly );
这将删除文件路径(如果有的话),并只留下addfile中第二个变量的文件名。
如果这能解决您的问题,您将确定知道问题出在您的文件名中,并可以轻松找到它。
只需发送作为参数绝对路径例如$abspath 。 然后用它来
$filenameonly = str_replace($abspath,"",$filenameonly);
它甚至可以在windows 8中运行100%,甚至你压缩的文件都在文件夹中。
而不是使用str_replace字符串函数,您可以使用内置的文件系统函数。
$zip->addfile(realpath($file),pathinfo($file,PATHINFO_BASEname));
总结以上是内存溢出为你收集整理的无法在由PHP Zip Archive生成的Windows资源pipe理器中打开zip文件全部内容,希望文章能够帮你解决无法在由PHP Zip Archive生成的Windows资源pipe理器中打开zip文件所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)