2011年7月30日 星期六

php 上傳及處理解壓縮檔案

最近瘋狂的跟 php 成為好朋友,繼之前把 os 由 win7 改成 ubuntu 之後,開始記錄些使用心得,這篇在說明怎麼處理使用者上傳的檔案和若為壓縮檔如何解壓縮。

一.上傳檔案
upload.php

<form method="post" action="test.php" enctype="multipart/form-data">
    <table>
        <tr>
            <td>
                <input id="Button1" name="file1" type="file" value="Select File" />
            </td>
        </tr>
        <tr>
            <td colspan="4" style="text-align: center">
                <input id="Button2" type="submit" value="OK" />
            </td>
        </tr>
    </table>
</form>
PS:
1. 要用 form 及 post 來傳送,且一定要有 enctype="multipart/form-data"
2. input type 要用 file
3. 記得指定 input name


test.php
//搬移上傳之壓縮檔至解壓縮目錄
$upload = $folder . basename($_FILES['file1']['name']);
if(!move_uploaded_file($_FILES['file1']['tmp_name'], $upload))
{
echo "move_uploaded_file error!";
exit;
}

//設定上傳之壓縮檔案權限
if(!chmod($upload, 0777))
{
echo "chmod error!";
exit;
}
PS:
1. move_uploaded_file 會覆蓋舊檔


二.處理壓縮檔
網路上有好心大大提供 class 可使用,連結為 PclZip,有幾個常用的參數以下列出。
-PCLZIP_OPT_PATH : 要解壓縮到哪的路徑。可用於extract()、extractByIndex()。
-PCLZIP_OPT_SET_CHMOD : 設定解壓縮出來的檔案的CHMOD值。可用於extract()、extractByIndex()。


test.php
include("pclzip.lib.php");
//解壓縮檔案並設定權限
$archive = new PclZip($upload);
if($archive->extract(PCLZIP_OPT_PATH, $folder, PCLZIP_OPT_SET_CHMOD, 0777) == 0)
{
echo "PclZip extract error!";
exit;
}

//設定解壓縮後資料夾權限
$path = pathinfo($upload);
$filename = $path['filename'];
$filename = $folder . $filename . "/";
if(!chmod($filename, 0777))
{
echo "chmod error!";
exit;
}
PS:

沒有留言:

張貼留言