php zip extractto,PHP 的解压缩ZipArchive中的extractTo(_php

博客讲述了在使用PHP的ZipArchive类在Windows环境下正常解压ZIP文件,但在Linux+nginx环境下遇到中文文件名丢失的问题。作者通过分析发现extractTo()方法在解压过程中存在问题,然后通过遍历ZipArchive对象的文件并手动复制文件及创建目录成功解决了问题。此解决方案可能对遇到类似问题的开发者有所帮助。
摘要由CSDN通过智能技术生成

在项目中要用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);

}

}

问题解决了哈。  找这个问题浪费了 我一天时间!! 希望对碰到同样 文件在解压的时候丢失的同学有帮助哈。

欢迎大家阅读《php 的解压缩ZipArchive中的extractTo(_php》,跪求各位点评,若觉得好的话请收藏本文,by 搞代码

e7ce419cf2d6ad34d01da2ceb8829eed.png

微信 赏一包辣条吧~

023a57327877fb4402bcc76911ec18ea.png

支付宝 赏一听可乐吧~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值