php檔案上傳-配置php.inn檔案以及預定義變數$_FILES
檔案上傳可以通過 HTTP協議來實現。要使用檔案上傳功能,首先要在php.ini設定檔中對上傳做一些設定,然後瞭解預定義變數$_FILES, 通過$_FILES的值對上傳檔案做一些限制和判斷,最後使用move_uploaded_file()函數實現上傳!
在前面的文章中我們介紹了檔案操作,讀寫以及目錄的處理和檔案處理的進階應用程式,相關文章:
《PHP檔案處理-寫入檔案及操作檔案》
《PHP目錄處理-開啟/關閉目錄》
《PHP目錄處理-瀏覽目錄以及操作目錄》
《PHP檔案處理的進階應用程式-遠程檔案訪問及鎖定檔案》
《PHP檔案處理的進階應用程式-檔案指標》
《PHP檔案處理-如何讀取檔案(一行,整個檔案)》
《PHP檔案處理-讀取檔案(一個字元,字串)》
《PHP檔案處理-開啟/關閉檔案》
小夥伴們可以去看看,今天我們介紹PHP檔案上傳,預定義變數以及配置php.ini!
一:配置 php.ini 檔案
想要順利的實現上傳功能,首要做的就是在 php.ini 中開啟檔案上傳,並對其中的一些參數作出合理的設定。找到 File Upioads 項,可以看到下面有 3 屬性,表示含義如下:
file_uploads:如果值為 on,說明伺服器支援上傳檔案;如果為 off,則表示不支援。
upload_tem_dir:上傳檔案臨時目錄。在檔案被成功上傳之前,檔案首先存放到伺服器端的臨時目錄,如果想要指定位置,可在這裡設定,否則使用系統預設目錄就可以了。
upload_max_filesize: 伺服器允許上傳的檔案的最大值,以MB為單位。系統預設是 2MB,使用者可以自行設定。
除了File Upolads項,還有幾個屬性也會影響到上傳檔案的功能。
說明:
1.如果使用整合的安裝包來配置PHP 的開發環境,上述介紹的這些配置資訊按預設已經配置好了!
2.如果要上傳超大的檔案,需要對 php.ini 的一些參數進行修改,其中包括 upload_max_filesize伺服器允許上傳的檔案的最大值,max_execution_time 一個指令所能執行的最長時間和memory_limit一個指令所分配的記憶體空間!
二:預定義變數$_FLIES
$_FLIES 變數儲存的事是上傳檔案的相關資訊,這些資訊對於上傳功能有很大的作用。該變數是一個二維數組。預定義變數$_FILES 元素說明如下表:
| 元素名 |
說明 |
| $_FILE[filename][name] |
儲存了上傳檔案的檔案名稱。如:exam.txt,myDream.jpg等 |
| $_FILE[filename][size] |
儲存了檔案大小,單位為位元組。 |
| $_FILE[filename][tmp_name] |
檔案上傳時, 首先在臨時目錄中被儲存成一個臨時檔案。該變數為臨時檔案名稱 |
| $_FILE[filename][type] |
上傳檔案的類型。 |
| $_FILE[filename][error] |
儲存了上傳檔案的結果。如果值為 0 ,說明檔案上傳成功 |
下面執行個體建立一個上傳檔案域,通過$_FILES變數輸出上傳的檔案資料。具體範例程式碼如下;
<html><body><table width="500" border="1" cellpadding="0" cellspacing="0"> <!--上傳檔案的 form表單,必須有 enctype 屬性--> <form method="post" about="" enctype="multipart/form-data"> <tr> <td width="150" height="30" align="right" valign="middle">請選擇上傳檔案:</td> <!--上傳檔案域,type類型為file--> <td width="250"><input type="file" name="upfile"></td> <!-- 提交按鈕--> <td width="100"><input type="submit" name="submit" value="上傳"></td></tr></form></table></body></html><?phpheader("Content-Type:text/html; charset=utf-8");if(!empty($_FILES)){ //判斷變數$_FILES是否為空白 foreach ($_FILES['upfile'] as $name => $value){ //使用 foreach 迴圈輸出上傳檔案資訊的名稱和值 echo $name,"=".$value."<br>"; }}?>
輸出結果為:
下一篇文章我們將介紹檔案上傳函數和多檔案上傳,具體內容請閱讀《PHP檔案上傳-move_uploaded_file()函數的使用詳解》