在项目中要用ZipArchive解压ZIP文件,起初测试环境在WINDOWS平台中,测试通过,换到 LINUX+nginx 的环境中时 就出问题了(ZIP包中有文件和文件夹一共3百多个文件,大部分是带汉字的文件名),问题的现象是:不带汉字的文件解压没有问题,另外有部分带汉字和数字字母的文件解压没有问题,然后其他纯文字的文件名就丢失了,也没有报错,最后把问题定位到了extractTo()方法,这个方法尼玛是个封装的方法,看不到实际的源代码。
但是,发现 for($i = 0; $i < $zip->numFiles; $i++) 这里却可以找到所有的文件,个数是正常的,那么问题就出现解压后的 copy环节了。那么是不是可以借助这个循环自己解压,自己copy文件呢??
于是
for($i = 0; $i < $zip->numFiles; $i++) {$filename = $zip->getNameIndex($i);if(!is_dir($filename)){copy("zip://".$path."#".$filename, $topath.$filename);}else{@mkdir($topath.'/'.$filename, 0777);}}
问题解决了哈。 找这个问题浪费了 我一天时间!! 希望对碰到同样 文件在解压的时候丢失的同学有帮助哈。
本文发布于:2024-02-04 08:40:47,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/170703325954043.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |