问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

如何用php解压缩文件

发布网友 发布时间:2022-04-28 07:20

我来回答

2个回答

懂视网 时间:2022-04-28 11:42

PHP解压缩zip文件

1、使用PHP执行文件解压缩zip文件,前提条件,一定要确定服务器开启了zip拓展

2、封装的方法如下:

实例代码

<?php
/**
 * 压缩文件
 * @param array $files 待压缩文件 array('d:/test/1.txt','d:/test/2.jpg');【文件地址为绝对路径】
 * @param string $filePath 输出文件路径 【绝对文件地址】 如 d:/test/new.zip
 * @return string|bool
 */
function zip($files, $filePath) {
 //检查参数
 if (empty($files) || empty($filePath)) {
 return false;
 }

 //压缩文件
 $zip = new ZipArchive();
 $zip->open($filePath, ZipArchive::CREATE);
 foreach ($files as $key => $file) {
 //检查文件是否存在
 if (!file_exists($file)) {
  return false;
 }
 $zip->addFile($file, basename($file));
 }
 $zip->close();

 return true;
}

/**
 * zip解压方法
 * @param string $filePath 压缩包所在地址 【绝对文件地址】d:/test/123.zip
 * @param string $path 解压路径 【绝对文件目录路径】d:/test
 * @return bool
 */
function unzip($filePath, $path) {
 if (empty($path) || empty($filePath)) {
 return false;
 }

 $zip = new ZipArchive();

 if ($zip->open($filePath) === true) {
 $zip->extractTo($path);
 $zip->close();
 return true;
 } else {
 return false;
 }
}
?>

相关教程推荐:《PHP教程》

热心网友 时间:2022-04-28 08:50

您好,ZIP格式的可以

<?php
//需开启配置 php_zip.dll
//phpinfo();
header("Content-type:text/html;charset=gb2312");
function get_zip_originalsize($filename, $path) {
 //先判断待解压的文件是否存在
 if(!file_exists($filename)){
  die("文件 $filename 不存在!");
 } 
 $starttime = explode(' ',microtime()); //解压开始的时间

 //将文件名和路径转成windows系统默认的gb2312编码,否则将会读取不到
 $filename = iconv("utf-8","gb2312",$filename);
 $path = iconv("utf-8","gb2312",$path);
 //打开压缩包
 $resource = zip_open($filename);
 $i = 1;
 //遍历读取压缩包里面的一个个文件
 while ($dir_resource = zip_read($resource)) {
  //如果能打开则继续
  if (zip_entry_open($resource,$dir_resource)) {
   //获取当前项目的名称,即压缩包里面当前对应的文件名
   $file_name = $path.zip_entry_name($dir_resource);
   //以最后一个“/”分割,再用字符串截取出路径部分
   $file_path = substr($file_name,0,strrpos($file_name, "/"));
   //如果路径不存在,则创建一个目录,true表示可以创建多级目录
   if(!is_dir($file_path)){
    mkdir($file_path,0777,true);
   }
   //如果不是目录,则写入文件
   if(!is_dir($file_name)){
    //读取这个文件
    $file_size = zip_entry_filesize($dir_resource);
    //最大读取6M,如果文件过大,跳过解压,继续下一个
    if($file_size<(1024*1024*6)){
     $file_content = zip_entry_read($dir_resource,$file_size);
     file_put_contents($file_name,$file_content);
    }else{
     echo "<p> ".$i++." 此文件已被跳过,原因:文件过大, -> ".iconv("gb2312","utf-8",$file_name)." </p>";
    }
   }
   //关闭当前
   zip_entry_close($dir_resource);
  }
 }
 //关闭压缩包
 zip_close($resource); 
 $endtime = explode(' ',microtime()); //解压结束的时间
 $thistime = $endtime[0]+$endtime[1]-($starttime[0]+$starttime[1]);
 $thistime = round($thistime,3); //保留3为小数
 echo "<p>解压完毕!,本次解压花费:$thistime 秒。</p>";
}
$size = get_zip_originalsize('temp/test.zip','temp/');
?>

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
胶皮烂了,502胶水能粘好胶皮吗?顺便问下胶皮烂了应该用什么胶水好啊 煎烤机是不是电饼铛啊? 煎烤机与电饼铛的区别是什么 煎烤机食谱大全 我终于战胜了懒惰 作文 600字,急!!! 与佛有关的梦,这暗示着佛缘吗? 大师们请进 实在迷惑。 不胜感激。 女命,1985年6月初6,辰时,请高人帮忙批一下八字,不胜感激!!!_百度... 求高手帮忙 Weight tent./ grs是什么意思WeightV./ grs 是什么意思 2022双十一活动总结与反思 2022年商家双十一活动总结 来电闪光灯那个软件好用 php中如何解析rest风格url 什么叫php的url路由技术,求解 php从url获取网页内容 PHP 怎么解析远程URL 传过来json ,在前端显示出来 php中处理URL地址问题 php解析url获取域名部分难点问题 急!!php获取url参数 php中URL怎么理解? php中使用parse_url()对网址进行解析的实现代码(parse_url详解) 几种php访问url的方法 php,如何把url字符串里面的参数解析出来 php打开URL的几种方法 php json_decode(); 如何解析不是很标准的json 比如下面的 json_encode json_decode 求代码 如何使用PHP语言来编码和解码JSON对象 json_encode的解决方法 为什么php数组经json php判断是否是json php哪个版本开始支持json php的序列化和返序列化跟json_encode有啥不同啊 php 如何解压压缩文件 php 怎把上传的rar zip文件 自动解压 用的是哪个函数 求高手指点 告急 谢谢 求源代码 PHP文件怎么解压啊? (急)php 解压文件(unzip) php怎样实现对zip文件的加密和解密 php如何压缩一个文件夹里面所有的文件到zip文件里面? 怎么用php写一个表单上传zip格式的压缩包并解压到根目录的指定目录中? php实现解压缩功能 zip密码 php PHP如何保留2位小数 如何使金额保留两位小数 php php和Python在数据处理方面有哪些差异 php break和continue的区别 简述php中break和contine的用法,及区别。 php exit,continue,break的问题 在C语言中,这里return语句有什么用,与break语句,exit语句,continue语句有什么区别? 请问return与exit的区别?谢谢 在php中什么用于中断 编程语言的die exit break有什么区别 php如何实现三层架构