thinkphp 解压压缩包zip 中文乱码问题

1. 使用之前需要  引用  PclZip.class.php 类 要在网上下载!

  //zip解压 pclzip 类
            if($_POST['database']=='add_zip'){
                $tmp_name = $_FILES["file"]["tmp_name"][0];//临时文件名字
                $new_name = $_FILES["file"]["name"][0]; //非临时文件名字
               if(count($_FILES['file']['name'][0])>1){

                   $value_zip['zip_fail']='只能上传一个zip压缩文件';
                   $this->ajaxReturn($value_zip);
               }
               if($_FILES['file']['size'][0] < 31457280 && $_FILES['file']['type'][0]=='application/x-zip-compressed'){
                   $filename_file =$new_name;
                   $houzhui_file = substr(strrchr($filename_file, '.'), 1);
                   $wei_file=mb_strlen($houzhui_file,'utf-8')+1;//获取后缀名的长度
                   $zong_file=mb_strlen($filename_file,'utf-8');//获取总的长度
                   $filenams_file=mb_substr($filename_file,0,$zong_file-$wei_file,'utf-8');
                   $pdfname_file=$filenams_file;//截取文件名前缀
                   //看是否有同级的目录
                   if(is_dir(iconv('utf-8','gb2312','./Public/Uploads/'.I('post.file').'/'.$pdfname_file))){

                       $value_zip['zip_fail']='以有相同目录名请查看一下';
                       $this->ajaxReturn($value_zip);
                   }
                   //上传压缩包
                   $zip_file_name=array();
                   //如果没有就创建一个
                   if(is_dir(iconv('utf-8','gb2312','./Public/Uploads/'.I('post.file')))==false){
                       createfile(I('post.file'));
                   }
                   if(move_uploaded_file($tmp_name, iconv('utf-8', 'gb2312', './Public/Uploads/'.I('post.file').'/'.$new_name))) {
                       //生成的压缩包位置
                       $zipurl = './Public/Uploads/'.I('post.file').'/'.$new_name;
                       $zip = new \Org\Util\PclZip;
                       $zip->PclZip(iconv('utf-8', 'gb2312', $zipurl));
                       if (($list = $zip->listContent()) == 0) {
                           //  die("Error : " . $zip->errorInfo(true));
                           $value_zip['zip_fail']=$zip->errorInfo(true);
                           $this->ajaxReturn($value_zip);
                       }

                       for ($i = 0; $i < sizeof($list); $i++) {
                           for (reset($list[$i]); $key = key($list[$i]); next($list[$i])) {
                               if ($key == 'filename' && $list[$i]['folder'] !="1") {
                                   $zip_filename= iconv('GB2312', 'UTF-8', $list[$i][$key]);
                                   $zip_type = substr(strrchr($zip_filename, '.'), 1);
                                   if ($this->types($zip_type) == "0") {
                                       unlink(iconv('utf-8','gb2312','./Public/Uploads/'.I('post.file').'/'. $new_name));
                                       $value_zip['zip_fail']= '文件里面有不符合上传的类型的条件';
                                       $this->ajaxReturn($value_zip);
                                   }
                                   if($zip_type=='xls' || $zip_type=='xlsx' ||$zip_type=='doc' || $zip_type=='docx'){
                                       $zip_file_name[]=iconv('GB2312', 'UTF-8', $list[$i][$key]);
                                   }
                               }
                           }
                       }

                     $zip_value= $zip->extract(PCLZIP_OPT_PATH,iconv('utf-8','gb2312','./Public/Uploads/'.I('post.file').'/'.$pdfname_file));
                    if ($zip_value == 0) {
                        $value_zip['zip_fail']=$zip->errorInfo(true);
                    }else{

                          for ($i=0;$i<count($zip_file_name);$i++){
                              $files_file_name=I('post.file').'/'.$pdfname_file.'/'.$zip_file_name[$i];
                              $filename_file_name =$zip_file_name[$i];
                              $houzhui = substr(strrchr($filename_file_name, '/'), 1);
                              $houzhui_name = substr(strrchr($houzhui, '.'), 1);
                              $wei=mb_strlen($houzhui_name,'utf-8')+1;//获取后缀名的长度
                              $zong=mb_strlen($houzhui,'utf-8');//获取总的长度
                              $filenams=mb_substr($houzhui,0,$zong-$wei,'utf-8');
                              $pdfname=$filenams;//截取文件名前缀
                            //  $this->ajaxReturn($pdfname.'<br>'.$files_file_name);
                              wordpdf($files_file_name,$pdfname);
                          }
                          unlink(iconv('utf-8','gb2312','./Public/Uploads/'.I('post.file').'/'. $new_name));
                          $value_zip['success_zip']='success_zip';
                    }
                       $this->ajaxReturn($value_zip);
                   }else{
                       $value_zip['zip_fail']='上传压缩包失败';
                       $this->ajaxReturn($value_zip);
                   }
               }else{
                   $value_zip['zip_fail']='文件大小超过30M或类型错误';
                   $this->ajaxReturn($value_zip);
               }

            }

猜你喜欢

转载自blog.csdn.net/qq_38366657/article/details/81394808
今日推荐