$_FILES-透過 HTTP POST 方式上傳到目前腳本的項目的陣列。
假設我們上傳檔案欄位name='userfile',$_FILES數組裡包括:
$_FILES['userfile']['name'] //客户端机器文件的原名称。 $_FILES['userfile']['type'] //文件的 MIME 类型,如果浏览器提供此信息的话。一个例子是“image/gif”。不过此 MIME 类型在 PHP 端并不检查,因此不要想当然认为有这个值。 $_FILES['userfile']['size'] //已上传文件的大小,单位为字节。 $_FILES['userfile']['tmp_name'] //文件被上传后在服务端储存的临时文件名。 $_FILES['userfile']['error'] //和该文件上传相关的错误代码。此项目是在 PHP 4.2.0 版本中增加的。 /**
錯誤碼有:
UPLOAD_ERR_OK
其值為0,沒有錯誤發生,檔案上傳成功。
UPLOAD_ERR_INI_SIZE
其值為 1,上傳的檔案超過了 php.ini 中 upload_max_filesize 選項限制的值。
UPLOAD_ERR_FORM_SIZE
其值為 2,上傳檔案的大小超過了 HTML 表單中 MAX_FILE_SIZE 選項指定的值。
eg,在表單中添加隱藏域:value值單位是字節
<form enctype="multipart/form-data" action="test.php" method="POST"> <!-- MAX_FILE_SIZE must precede the file input field --> <input type="hidden" name="MAX_FILE_SIZE" value="12" /> <!-- Name of input element determines name in $_FILES array --> Send this file: <input name="userfile" type="file" /> <input type="submit" value="Send File" /> </form>
UPLOAD_ERR_PARTIAL
其值為3,文件只有部分被上傳。
UPLOAD_ERR_NO_FILE
其值為 4,沒有檔案上傳。
UPLOAD_ERR_NO_TMP_DIR
#其值為 6,找不到臨時資料夾。 PHP 4.3.10 和 PHP 5.0.3 引進。
UPLOAD_ERR_CANT_WRITE
其值為 7,檔案寫入失敗。 PHP 5.1.0 引進。
檔案被上傳後,預設會被儲存到服務端的預設暫存目錄中,除非 php.ini 中的 upload_tmp_dir設定為其它的路徑。服務端的預設臨時目錄可以透過更改PHP運行環境的環境變數TMPDIR來重新設置,但是在PHP腳本內部透過執行 putenv() 函數來設定是不起作用的。這個環境變數也可以用來確認其它的操作也是在上傳的檔案上進行的。
檔案上傳可能用到的其他函數:
is_uploaded_file:
is_uploaded_file — 判断文件是否是通过 HTTP POST 上传的 is_uploaded_file ( string $filename ) : bool
參數:filename-要檢查的檔案名稱。
傳回值:成功時傳回 TRUE, 或失敗時傳回 FALSE。
如果 filename 所給的檔案是透過 HTTP POST 上傳的則傳回 TRUE。這可以用來確保惡意的使用者無法欺騙腳本去存取本不能存取的文件,例如 /etc/passwd。
move_uploaded_file:
move_uploaded_file — 将上传的文件移动到新位置 move_uploaded_file ( string $filename , string $destination ) : bool
參數:filename 上傳的檔案的檔案名稱;destination 移動檔案到這個位置(絕對路徑)
本函數檢查並確保由filename 指定的檔案是合法的上傳檔案(即透過PHP 的HTTP POST 上傳機制所上傳的)。如果文件合法,則將其移至由 destination 指定的文件。
更多相關php知識,請造訪php教學!
以上是PHP 超全域變數之$_FILES詳解的詳細內容。更多資訊請關注PHP中文網其他相關文章!