衆所周知,文件上傳在一些網站應用中是必不可少的一部分。好比我的博客上傳個性頭像,一些論壇分享好的學習資料等,這就涉及到使用表單處理文件上傳的知識,在php中咱們可使用$_FILES這個全局數組來處理。下面就看看基本的文件上傳處理部分。首先要說明的,可以上傳文件一定是一個安全隱患,因此在開發這部分功能時,必定要注意網站的安全性。而本文所探討的只是基本的文件上傳部分,關於安全性這方面考慮的較少,但願在往後的高級應用中能夠學習的到。php
在PHP預約義變量這一節咱們對一些預約義變量進行了一些大概的學習,其中就有$_FILES這個全局變量,那麼如今再來詳細的瞭解關於這個全局量的知識,由於我在處理文件上傳時,要使用到它的相關功能。css
$_FILES參數詳解:
$_FILES["file"]["name"] – 被上傳文件的名稱
$_FILES["file"]["type"] – 被上傳文件的類型
$_FILES["file"]["size"] – 被上傳文件的大小,以字節計
$_FILES["file"]["tmp_name"] – 存儲在服務器的文件的臨時副本的名稱
$_FILES["file"]["error"] – 由文件上傳致使的錯誤代碼html
$_FILES["file"]["error"]中的["error"]值狀況:
UPLOAD_ERR_OK
0:沒有錯誤發生,文件上傳成功
UPLOAD_ERR_INI_SIZE
1:上傳的文件超過了 php.ini中upload_max_filesize(默認狀況爲2M) 選項限制的值
UPLOAD_ERR_FORM_SIZE
2:上傳文件的大小超過了 HTML表單中MAX_FILE_SIZE選項指定的值
UPLOAD_ERR_PARTIAL
3:文件只有部分被上傳
UPLOAD_ERR_NO_FILE
4:沒有文件被上傳
5:傳文件大小爲0
下面咱們就來看看最基本的文件上傳:windows
這個HTML頁面以下圖:數組
upload-file.php代碼以下:安全
咱們隨便上傳一個word文件,看看處理結果如何:服務器
能夠看到,這個文件被保存到C:\WINDOWS\temp\臨時目錄下,你可能想去看看在這個目錄是否存在這個文件,但結果是:沒有!爲何呢?由於php在執行完這個腳本後,把它生成的文件又刪除了,因此在上傳以後還要進一步處理。另外還隨便提一下,在windows下,php所生成的臨時文件如php7D.tmp是有規律的,也就是說在下一次經過表單上傳的文件應該像這樣:php7E.tmp
爲了保存咱們上傳的文件,要使用move_uploaded_file函數。在你的upload-file.php文件同目錄建立一個upload文件夾。下面再來看看上面那個示例:php7
?>app
再來看看結果:函數
通過這一步的處理,在咱們所指定的地方(upload)就能夠獲得咱們上傳的文件。到這裏,最基本的文件上傳就結束了。還說一下,咱們在上傳的時候必定要考慮文件的類型,要考慮文件的大小等。關於這些方面隨着學習的深刻再來介紹吧