thinkphp 上傳zip和rar壓縮包,然后php解壓zip和rar,在依次上傳解壓出的文件
以下思路是我個(gè)人的一些想法,有更好的方法希望大家分享交流……
1.創(chuàng)建一個(gè)表單?
<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); //創(chuàng)建解壓目錄 $title = $_FILES['file_name']['name']; //上傳壓縮包名稱 $media_jl = array(); //創(chuàng)建一個(gè)空數(shù)組 $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); //判斷上傳文件個(gè)數(shù),上傳文件不能多于10個(gè) if ($wj_count > 10) { //清空解壓文件 $this->deldir($dir); this->error('上傳文件多于10個(gè)!'); } //文件上傳提交 if (!empty($array_file)) { foreach ($array_file as $k => $v) { //此處就使用tp的上傳或者自己的上傳方法…… } }else{ this->error('壓縮包為空!'); } }else{ //其他格式的文件根據(jù)自己實(shí)際情況上傳 }
3.解壓zip文件
public function unzip_file($file, $dir){ // 實(shí)例化對(duì)象 $zip = new ZipArchive() ; //打開zip文檔,如果打開失敗返回提示信息 if ($zip->open($file) !== TRUE) { die ("Could not open archive"); } //將壓縮文件解壓到指定的目錄下 $zip->extractTo($dir); //關(guān)閉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."."); //定義用于存儲(chǔ)文件名的數(shù)組 $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.清除解壓文件(注:這個(gè)清除文件的方法不能清除中文名稱的文件)
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); //刪除當(dāng)前文件夾: if(rmdir($dir)) { return true; } else { return false; } }
清除解壓文件及文件夾,我使用了指令清除,大家有什么好的方法給我推薦一哈
function deldir($dir){ exec('rd /s /q '.$dir); }
一個(gè)新手的思路,大家多多批評(píng)指教……

熱AI工具

Undress AI Tool
免費(fèi)脫衣圖片

Undresser.AI Undress
人工智慧驅(qū)動(dòng)的應(yīng)用程序,用於創(chuàng)建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費(fèi)的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費(fèi)的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強(qiáng)大的PHP整合開發(fā)環(huán)境

Dreamweaver CS6
視覺化網(wǎng)頁(yè)開發(fā)工具

SublimeText3 Mac版
神級(jí)程式碼編輯軟體(SublimeText3)

熱門話題

《Go語(yǔ)言程式設(shè)計(jì)實(shí)例:Web開發(fā)中的程式碼範(fàn)例》隨著網(wǎng)路的快速發(fā)展,Web開發(fā)已成為各行業(yè)中不可或缺的一部分。作為一門功能強(qiáng)大且效能優(yōu)越的程式語(yǔ)言,Go語(yǔ)言在Web開發(fā)中越來越受到開發(fā)者們的青睞。本文將透過具體的程式碼範(fàn)例,介紹如何利用Go語(yǔ)言進(jìn)行Web開發(fā),讓讀者更能理解並運(yùn)用Go語(yǔ)言來建立自己的Web應(yīng)用。 1.簡(jiǎn)單的HTTP伺服器首先,讓我們從一個(gè)

華為雲(yún)端邊緣運(yùn)算對(duì)接指南:Java程式碼範(fàn)例快速實(shí)現(xiàn)介面隨著物聯(lián)網(wǎng)技術(shù)的快速發(fā)展和邊緣運(yùn)算的興起,越來越多的企業(yè)開始關(guān)注邊緣運(yùn)算的應(yīng)用。華為雲(yún)端提供了邊緣運(yùn)算服務(wù),為企業(yè)提供了高可靠的運(yùn)算資源和便利的開發(fā)環(huán)境,使得邊緣運(yùn)算應(yīng)用更容易實(shí)現(xiàn)。本文將介紹如何透過Java程式碼快速實(shí)現(xiàn)華為雲(yún)端邊緣運(yùn)算的介面。首先,我們需要準(zhǔn)備好開發(fā)環(huán)境。確保你已經(jīng)安裝了Java開發(fā)工具包(

了解Python程式設(shè)計(jì)的入門程式碼範(fàn)例Python是一種簡(jiǎn)單易學(xué),功能強(qiáng)大的程式語(yǔ)言。對(duì)於初學(xué)者來說,了解Python程式設(shè)計(jì)的入門級(jí)程式碼範(fàn)例是非常重要的。本文將為您提供一些具體的程式碼範(fàn)例,幫助您快速入門。列印HelloWorldprint("HelloWorld")這是Python中最簡(jiǎn)單的程式碼範(fàn)例。 print()函數(shù)用於將指定的內(nèi)容輸出

如何使用PHP編寫庫(kù)存管理系統(tǒng)中的庫(kù)存分倉(cāng)管理功能碼庫(kù)存管理是許多企業(yè)中不可或缺的一部分。對(duì)於擁有多個(gè)倉(cāng)庫(kù)的企業(yè)來說,庫(kù)存分倉(cāng)管理功能尤其重要。透過合理管理和追蹤庫(kù)存,企業(yè)可以實(shí)現(xiàn)不同倉(cāng)庫(kù)之間的庫(kù)存調(diào)撥,優(yōu)化營(yíng)運(yùn)成本,改善協(xié)同效率。本文將介紹如何使用PHP編寫庫(kù)存分倉(cāng)管理功能的程式碼,並為您提供相關(guān)的程式碼範(fàn)例。一、建立資料庫(kù)在開始編寫庫(kù)存分倉(cāng)管理功能的程式碼之

Java冒泡排序最簡(jiǎn)單的程式碼範(fàn)例冒泡排序是一種常見的排序演算法,它的基本想法是透過相鄰元素的比較和交換來將待排序序列逐步調(diào)整為有序序列。以下是一個(gè)簡(jiǎn)單的Java程式碼範(fàn)例,示範(fàn)如何實(shí)作冒泡排序:publicclassBubbleSort{publicstaticvoidbubbleSort(int[]arr){int

PHP變數(shù)儲(chǔ)存程式運(yùn)行期間的值,對(duì)於建立動(dòng)態(tài)且互動(dòng)的WEB應(yīng)用程式至關(guān)重要。本文將深入探討php變量,並透過10個(gè)真實(shí)的範(fàn)例展示它們的實(shí)際應(yīng)用。 1.儲(chǔ)存使用者輸入$username=$_POST["username"];$passWord=$_POST["password"];此範(fàn)例從表單提交中提取使用者名稱和密碼,並將其儲(chǔ)存在變數(shù)中以供進(jìn)一步處理。 2.設(shè)定配置值$database_host="localhost";$database_username="username";$database_pa

標(biāo)題:從入門到精通:Go語(yǔ)言中常用資料結(jié)構(gòu)的程式碼實(shí)作資料結(jié)構(gòu)在程式設(shè)計(jì)中起著至關(guān)重要的作用,它是程式設(shè)計(jì)的基礎(chǔ)。在Go語(yǔ)言中,有許多常用的資料結(jié)構(gòu),掌握這些資料結(jié)構(gòu)的實(shí)作方式對(duì)於成為優(yōu)秀的程式設(shè)計(jì)師至關(guān)重要。本文將介紹Go語(yǔ)言中常用的資料結(jié)構(gòu),並給出對(duì)應(yīng)的程式碼範(fàn)例,幫助讀者從入門到精通這些資料結(jié)構(gòu)。 1.數(shù)組(Array)數(shù)組是一種基本的資料結(jié)構(gòu),是一組相同類型

Java選擇排序法程式碼編寫指南及範(fàn)例選擇排序是一種簡(jiǎn)單直觀的排序演算法,其想法是每次從未排序的元素中選擇最?。ɑ蜃畲螅┑脑剡M(jìn)行交換,直到所有元素排序完成。本文將提供選擇排序的程式碼編寫指南,並附上具體的Java範(fàn)例程式碼。演算法原理選擇排序的基本原理是將待排序數(shù)組分為已排序和未排序兩部分,每次從未排序部分選擇最?。ɑ蜃畲螅┑脑?,將其放到已排序部分的末尾。重複上述
