1、PHP上傳壓縮包並解壓的大概流程:
普通上傳功能->上傳到服務器->加載系統組件->找到上傳的文件並執行解壓命令->成功解壓到目錄
2、php執行系統命令的幾類函數:
(1)
system() 輸出並返回最后一行shell結果。
(2)
exec() 不輸出結果,返回最后一行shell結果
(3)
passthru() 只調用命令,把運行結果原樣地輸出
(4)
new com() 系統預定義com類,根據需要任意選擇內置方法(操作方式再麻煩,但也是功能最全的)
3、Com組件的用法:
(1)$obj=new com("wscript.shell");//加載
wscript.shell用來執行dos命令的組件
(2)$obj->run(“所要執行的命令內容”);//所要執行的命令和返回參數
由於只是說明原理,一些安全驗證判斷就不寫出來了,大家可以自行補充。
通俗易懂,直接上代碼:(記得打開php.ini里的
com.allow_dcom = true)
1 <?php 2 3 if($_POST['submit']){ 4 $tmpname=$_FILES['filename']['tmp_name']; 5 $filename=$_FILES['filename']['name']; 6 $path=getcwd();//獲取當前目錄的絕對路徑 7 $filepath=$path.'\\'.$filename; 8 9 move_uploaded_file($tmpname, $filename); 10 11 $obj=new com('wscript.shell'); 12 //雙引號可以解析變量 13 $obj->run("winrar x $filepath $path",1,true); 14 //刪除源文件 15 @unlink($filename); 16 17 18 } 19 20 21 ?> 22 23 24 <form action="" method="post" enctype="multipart/form-data"> 25 上傳文件:<input type="file" name="filename"/> 26 <input type="submit" name="submit" value="上傳文件並解壓"> 27 </form>
輕松搞定~