zoukankan      html  css  js  c++  java
  • PHP 的解压缩ZipArchive中的extractTo()方法 LINUX+nginx环境中解压zip时文件丢失的问题

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

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

  • 相关阅读:
    Spring shiro学习(二)
    Spring shiro学习(一)
    Redis/zookeeper/ActiveMQ在Mac下的安装配置
    Mac下利用brew安装Intellij IDEA
    MySQL服务相关
    Ruby变量常量
    Web性能测试工具:Siege安装&使用简介
    无限级分类功能实践
    Ubuntu Bash and Dash
    安装好的虚拟机,外部通过ssh工具连接,报connection failed
  • 原文地址:https://www.cnblogs.com/mfrbuaa/p/4186103.html
Copyright © 2011-2022 走看看