程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> PHP綜合 >> PHP中文件上傳表單與$_FILES詳解問題

PHP中文件上傳表單與$_FILES詳解問題

編輯:PHP綜合
文件上傳表單 <form enctype="multipart/form-data" action="__URL__" method="POST">
<input type="hidden" name="MAX_FILE_SIZE" value="30000" />
<input name="userfile" type="file" />
<input type="submit" value="Send File" />
</form>

以上范例中的 __URL__ 應該被換掉,指向一個真實的 PHP 文件。

MAX_FILE_SIZE 隱藏字段(單位為字節)必須放在文件輸入字段之前,其值為接收文件的最大尺寸。這是對浏覽器的一個建議,PHP 也會檢查此項。在浏覽器端可以簡單繞過此設置,

因此不要指望用此特性來阻擋大文件。實際上,PHP 設置中的上傳文件最大值是不會失效的。但是最好還是在表單中加上此項目,因為它可以避免用戶在花時間等待上傳大文件之後才發現文件過大上傳失敗的麻煩。

$_FILES數組內容如下:

$_FILES['myFile']['name'] 客戶端文件的原名稱。
$_FILES['myFile']['type'] 文件的 MIME 類型,需要浏覽器提供該信息的支持,例如"image/gif"。
$_FILES['myFile']['size'] 已上傳文件的大小,單位為字節。
$_FILES['myFile']['tmp_name'] 文件被上傳後在服務端儲存的臨時文件名,一般是系統默認。可以在PHP.ini的upload_tmp_dir 指定,但 用 putenv() 函數設置是不起作用的。
$_FILES['myFile']['error'] 和該文件上傳相關的錯誤代碼。['error'] 是在 PHP 4.2.0 版本中增加的。下面是它的說明:(它們在PHP3.0以後成了常量)

UPLOAD_ERR_OK

其值為 0,沒有錯誤發生,文件上傳成功。

UPLOAD_ERR_INI_SIZE

其值為 1,上傳的文件超過了 PHP.ini 中 upload_max_filesize 選項限制的值。

UPLOAD_ERR_FORM_SIZE

其值為 2,上傳文件的大小超過了 Html 表單中 MAX_FILE_SIZE 選項指定的值。

UPLOAD_ERR_PARTIAL

其值為 3,文件只有部分被上傳。

UPLOAD_ERR_NO_FILE

其值為 4,沒有文件被上傳。
其值為 5, 上傳文件大小為0

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() 函數來設置是不起作用的。該環境變量也可以用來確認其它的操作也是在上傳的文件上進行的。

move_uploaded_file() 函數將上傳的文件移動到新位置。

若成功,則返回 true,否則返回 false。

語法
move_uploaded_file(file,newloc)
參數描述 file 必需。規定要移動的文件。 newloc 必需。規定文件的新位置。說明

本函數檢查並確保由 file 指定的文件是合法的上傳文件(即通過 PHP 的 HTTP POST 上傳機制所上傳的)。如果文件合法,則將其移動為由 newloc 指定的文件。

如果 file 不是合法的上傳文件,不會出現任何操作,move_uploaded_file() 將返回 false。

如果 file 是合法的上傳文件,但出於某些原因無法移動,不會出現任何操作,move_uploaded_file() 將返回 false,此外還會發出一條警告。

這種檢查顯得格外重要,如果上傳的文件有可能會造成對用戶或本系統的其他用戶顯示其內容的話。

提示和注釋

注釋:本函數僅用於通過 HTTP POST 上傳的文件。

注意:如果目標文件已經存在,將會被覆蓋。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved