檔案上傳在WEB程式開發上市經常使用到的功能,而利用PHP的檔案上傳功能也相當的方便,不需要太多程式碼即可完成;要建置好檔案上傳功能主要需完整設定下列步驟

(1) php.ini設定

打開php.ini找到【File Uploads】的設定區塊,並設定下列參數
- file_uploads = On ( 設定檔案上傳功能是否開啟,預設值即為On的狀態 )
- upload_tmp_dir = c:\php\temp\ ( 設定檔案上傳的暫存目錄,此參數預設為關閉的狀態,預設將丟到系統的temp目錄;以Windows為例,預設上傳目錄為c:\windows\temp\ )
- upload_max_filesize = 2M ( 設定允許上傳檔案的大小,預設值為2M )
- max_file_uploads = 20 ( 設定一次最多可上傳的檔案數量,預設值為20 )
設定完成後再將Web Server重啟後即可生效

(2) 確認暫存目錄及目的目錄的權限是否開啟

在Windows環境下,目錄必須允許可寫入的權限

(3) 佈置HTML file上傳元件及表單設定編碼方式

在HTML表單頁面上布置file元件,並設定form標籤的enctype屬性和上傳元件name屬性的如下

enctype="multipart/form-data"&>
............
type="file" name="list">
............


(4) 於PHP程式端接收並搬移檔案

在伺服器端PHP程式接收檔案並將檔案自暫存目錄,主要利用$_FILES變數和move_uploaded_file進行動作。可利用$_FILES['list']取得檔案相關資訊 (名稱需與上傳元件的name屬性相同),如下
$_FILES['list']['tmp_name'] : 上傳檔案的暫存檔位置及名稱
$_FILES['list']['name'] : 上傳檔案的名稱
$_FILES['list']['size'] : 上傳檔案的大小

在此要注意的是檔案路徑的寫法需依系統環境為Windows或Linux而決定路徑描述方式,例如在Windows環境如c:\\php\temp \\list.csv (路徑需雙斜線避免PHP錯誤解譯);在Linux環境則為/php/temp/list.csv。基本的檔案上傳並搬移至指定目錄方式如下範例所示


define('_DOC_ROOT_', $_SERVER['DOCUMENT_ROOT'].'\\');
define('_DOC_UPLOAD_', _DOC_ROOT_.'TEMP\\UPLOAD\\');

if( !isset($_POST['list']) )
return false;

// Get the uploaded list
$tmp_name = $_FILES['list']['tmp_name'];
$real_name = _DOC_UPLOAD_ . basename($_FILES['list']['name']);
move_uploaded_file($tmp_name, $real_name);


如此便可輕鬆完成PHP檔案上傳


參考資料:

1. http://blog.raienet.com/410

http://yorkshiredaydreamer.blogspot.com/2011/08/php.html
創作者介紹

佳佳的窩

天秤女~佳佳 發表在 痞客邦 PIXNET 留言(0) 人氣()