请高手指点:PHP 如何解压缩zip格式压缩的文件或压缩文件夹内的文件到指定目录

zip格式压缩了几个文件,或压缩了一个文件夹,文件夹里有多个文件,现在要把压缩包内的文件解压到指定目录,无论压缩包内有无文件夹,都只要文件,不要文件夹,该怎么做,求高手指... zip格式压缩了几个文件,或压缩了一个文件夹,文件夹里有多个文件,
现在要把压缩包内的文件解压到指定目录,无论压缩包内有无文件夹,都只要文件,不要文件夹,该怎么做,求高手指点。
比如:C:\aaa.zip 解压到 C:\bbb
aaa.zip 可能只包含 abc.txt,或包含文件夹 ccc\abc.txt,只需要把abc.txt解压到C:\bbb
我现在的做法,只能解压文件,如果压缩包里有文件夹就不能正确解压了。
$file //zip文件
$fileDir //要解压到文件路径(绝对路径)

function unzip ($file,$fileDir) {
$zip = zip_open($file);
echo $zip;
echo "**";
if ($zip) {
while ($zip_entry = zip_read($zip)) {
$name = zip_entry_name($zip_entry);
if (zip_entry_open($zip, $zip_entry, "r ")) {
$buf = zip_entry_read($zip_entry, zip_entry_filesize($zip_entry));
$newName=microtime().zip_entry_name($zip_entry);
$fileHandle=fopen( "$fileDir/$newName ", 'w+ ');
fwrite($fileHandle,$buf,zip_entry_filesize($zip_entry));
fclose($fileHandle);
zip_entry_close($zip_entry);
}else{
return false;
}
}
return zip_close($zip);
}
}
展开
 我来答
yudelai
推荐于2016-10-22 · 超过10用户采纳过TA的回答
知道答主
回答量:30
采纳率:0%
帮助的人:32.9万
展开全部
/**
* PHP在线压缩/解压实例
*/

date_default_timezone_set('prc');

$zip = new engine_compress_decompress();

if (isset($_POST))
{
$sourcePath = ''; //默认位置

if (isset($_FILES['upfile'])) //上传文件
{
$stmp = $zip->fileUpload('upfile');
$sourcePath = $stmp['sourcefile'];
$upfileError = $stmp['error'];
}
elseif (isset($_POST['inputfile'])) //输入目录或者文件
{
$sourcePath = $_POST['inputfile'];
}
elseif (isset($_POST['decompresssourcefiles'])) //解压缩提交
{
$isDecompress = $zip->decompress($_POST['decompresssourcefiles'], $_POST['topath']);
if (!empty($isDecompress['filelist']))
{
$href = '<script type="text/javascript" language="javascript">window.location.href=\'#decompress\'</script>';
}

}

$fileList = $zip->fileArray($sourcePath); //解压缩文件列表

if (isset($_POST['compressinputfileorfolder'])) //压缩文件目录或者文件输入
{
$sourcePath = $_POST['compressinputfileorfolder'];
$href = '<script type="text/javascript" language="javascript">window.location.href=\'#compress\'</script>';
$compressFilelist = $zip->compressFileArray($sourcePath); //压缩文件列表
}
elseif ((isset($_POST['selectcompressfilelist'])) && (isset($_POST['compresssavefilename'])))
{
$compressFiles = $zip->compress($_POST['selectcompressfilelist'], $_POST['compresssavefilename']); //真实检测
$isCompress = $zip->CompileZipFile($compressFiles, $zip->savePath, 'all');
if (!empty($isCompress))
{
$href = '<script type="text/javascript" language="javascript">window.location.href=\'#compress\'</script>';
}
}
}
追问
谢谢你的回答,有些地方没明白
1、engine_compress_decompress 是什么类型?我没找到
2、有几个类似'decompresssourcefiles' 或'compressinputfileorfolder'的字符串,都是画面项目名吗?作用是什么?

呵呵,第一次做,不了解到东西太多了
追答
engine_compress_decompress 是自定义的压缩与解压缩类

compressinputfileorfolder是输入压缩文件或目录
decompresssourcefiles是解压文件或目录

代码太多,输入不了那么多内容,我把前面定义的内容省略了,上面告诉你的是重点,类和压缩解压你可以自己另外定义
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式