无法在由PHP Zip Archive生成的Windows资源pipe理器中打开zip文件

无法在由PHP Zip Archive生成的Windows资源pipe理器中打开zip文件,第1张

概述无法在由PHP Zip Archive生成的Windows资源pipe理器中打开zip文件

当我试图打开我的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文件所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/1284670.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-06-09
下一篇2022-06-09

发表评论

登录后才能评论

评论列表(0条)

    保存