2007年5月29日 星期二

POST 方法上傳

符合 RFC-1867 標準的瀏覽器
PHP 的這種特性使得我們既可以上傳文本文件,也可以上傳二進制文件。利用 PHP 的認証和文件操作函式,您就可以控制誰有上傳的權限,以及在文件上傳後進行哪些處理。

PHP 也支援 PUT 方法的文件上傳,Netscape Composer 和 W3C 的 Amaya 客戶端使用這種方法。

自動全域變數 $_FILES 從 PHP 4.1.0 版本開始被支援。在這之前,從 4.0.0 版本開始,PHP 支援 $HTTP_POST_FILES 陣列。這些陣列將包含所有關於您上傳的文件的訊息,其中,我們推薦您使用 $_FILES。

我們假設文件上傳字段的名稱如上例所示,為 userfile。


$_FILES['userfile']['name']
客戶端機器文件的原名稱。

$_FILES['userfile']['type']
文件的 MIME 型別,需要瀏覽器提供該訊息的支援,例如“image/gif”。

$_FILES['userfile']['size']
已上傳文件的大小,單位為字節。

$_FILES['userfile']['tmp_name']
文件被上傳後在伺服端儲存的臨時文件名。

$_FILES['userfile']['error']
和該文件上傳相關的錯誤代碼。['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 選項指定的值。

UPLOAD_ERR_PARTIAL
值:3; 文件只有部分被上傳。

UPLOAD_ERR_NO_FILE
值:4; 沒有文件被上傳。


註: 這些在 PHP 4.3.0 之後變成了 PHP 常數。

在 PHP 4.2.0 以上版本,您還可以通過 $_FILES['userfile']['error'] 變數來根據不同的錯誤代碼來做相關的判斷。不管做何種的判斷,您必須將該文件從臨時目錄中刪除,要麼將其移動到其它的地方。

如果該文件沒有被移動到其它地方也沒有被改名,則該文件將在表單請求結束時被刪除。

沒有留言:

網誌存檔

關於我自己

Aspire freedom , Hope to do Soming make self complete ~