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);
}
}