thinkphp 上传zip和rar压缩包,然后php解压zip和rar,在依次上传解压出的文件
以下思路是我个人的一些想法,有更好的方法希望大家分享交流……
1.创建一个表单
<form name="theForm" id="theForm" action="/index.php/Article/add" method="post" enctype="multipart/form-data"> 上传文件:<input id="file_name" type="file" name="file_name"> <input id="submit" name="submit" value="提交" type="submit"> <form>
2.接下来就到php的处理
public function index(){ //解压文件所保存的目录 $dir = "D:\jl_zip"; if (file_exists($dir) == true) { //清空解压文件 $this->deldir($dir); } mkdir($dir); //创建解压目录 $title = $_FILES['file_name']['name']; //上传压缩包名称 $media_jl = array(); //创建一个空数组 $file = $_FILES['file_name']['tmp_name']; //需要压缩的文件[夹]路径 $type_wj = pathinfo($title, PATHINFO_EXTENSION); //获取文件类型 //判断文件类型 if(strtolower($type_wj) == "zip" || strtolower($type_wj) == "rar"){ if(strtolower($type_wj) == "zip"){ //解压zip文件 $this->unzip_file($file,$dir); }else{ //解压rar文件 $this->unrar($file,$dir); } //获取解压后的文件 $array_file = $this->loopFun($dir); $wj_count = count($array_file); //判断上传文件个数,上传文件不能多于10个 if ($wj_count > 10) { //清空解压文件 $this->deldir($dir); this->error('上传文件多于10个!'); } //文件上传提交 if (!empty($array_file)) { foreach ($array_file as $k => $v) { //此处就使用tp的上传或者自己的上传方法…… } }else{ this->error('压缩包为空!'); } }else{ //其他格式的文件根据自己实际情况上传 }
3.解压zip文件
public function unzip_file($file, $dir){ // 实例化对象 $zip = new ZipArchive() ; //打开zip文档,如果打开失败返回提示信息 if ($zip->open($file) !== TRUE) { die ("Could not open archive"); } //将压缩文件解压到指定的目录下 $zip->extractTo($dir); //关闭zip文档 $zip->close(); }
4.解压rar文件
public function unrar($file,$dir){ $obj = new com("wscript.shell"); if($obj){ $obj->run('winrar x '.$file.' '.$dir, 0, true); return true; }else{ return false; } $obj->Quit(); $obj->Release(); $obj = null; }
5.获取解压文件
public function loopFun($dir) { $handle = opendir($dir."."); //定义用于存储文件名的数组 $array_file = array(); while (false !== ($file = readdir($handle))) { if ($file != "." && $file != "..") { $array_file[] = $dir.'/'.$file; //输出文件名 } } closedir($handle); return $array_file; //print_r($array_file); }
6.清除解压文件(注:这个清除文件的方法不能清除中文名称的文件)
function deldir($dir) { //先删除目录下的文件: $dh=opendir($dir); while ($file=readdir($dh)) { if($file!="." && $file!="..") { $fullpath=$dir."/".$file; if(!is_dir($fullpath)) { unlink($fullpath); } else { deldir($fullpath); } } } closedir($dh); //删除当前文件夹: if(rmdir($dir)) { return true; } else { return false; } }
清除解压文件及文件夹,我使用了指令清除,大家有什么好的方法给我推荐一哈
function deldir($dir){ exec('rd /s /q '.$dir); }
一个新手的思路,大家多多批评指教……
声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事
R.E.P.O.説明されたエネルギー結晶と彼らが何をするか(黄色のクリスタル)
1 か月前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最高のグラフィック設定
1 か月前By尊渡假赌尊渡假赌尊渡假赌
アサシンのクリードシャドウズ:シーシェルリドルソリューション
3週間前ByDDD
Will R.E.P.O.クロスプレイがありますか?
1 か月前By尊渡假赌尊渡假赌尊渡假赌

ホットツール

MinGW - Minimalist GNU for Windows
このプロジェクトは osdn.net/projects/mingw に移行中です。引き続きそこでフォローしていただけます。 MinGW: GNU Compiler Collection (GCC) のネイティブ Windows ポートであり、ネイティブ Windows アプリケーションを構築するための自由に配布可能なインポート ライブラリとヘッダー ファイルであり、C99 機能をサポートする MSVC ランタイムの拡張機能が含まれています。すべての MinGW ソフトウェアは 64 ビット Windows プラットフォームで実行できます。

ドリームウィーバー CS6
ビジュアル Web 開発ツール

WebStorm Mac版
便利なJavaScript開発ツール

ZendStudio 13.5.1 Mac
強力な PHP 統合開発環境

メモ帳++7.3.1
使いやすく無料のコードエディター
