學習PHP時,你可能會遇到PHP上傳問題,這裡將介紹PHP上傳問題的解決方法,在這裡拿出來和大家分享一下。本特性可以使用戶上傳文本和二進制文件。用 PHP 的認證和文件操作函數,可以完全控制允許哪些人上傳以及文件上傳後怎樣處理PHP上傳的文件。請注意 PHP 也支持 PUT 方法的文件上傳,Netscape Composer 和 W3C 的 Amaya 客戶端使用這種方法。
例子1. 文件上傳表單
可以如下建立一個特殊的表單來支持文件上傳:
- <!-- The data encoding type, enctype, MUST be specified as below -->
- <form enctype="multipart/form-data" action="__URL__" method="POST">
- <!-- MAX_FILE_SIZE must precede the file input field -->
- <input type="hidden" name="MAX_FILE_SIZE" value="30000" />
- <!-- Name of input element determines name in -->
PHP上傳之POST方法上傳
本特性可以使用戶上傳文本和二進制文件。用 PHP 的認證和文件操作函數,可以完全控制允許哪些人上傳以及文件上傳後怎樣處理。PHP 能夠接受任何來自符合 RFC-1867 標准的浏覽器(包括 Netscape Navigator 3 及更高版本,打了補丁的 Microsoft Internet Explorer 3 或者更高版本)上傳的文件。請注意 PHP 也支持 PUT 方法的文件上傳,Netscape Composer 和 W3C 的 Amaya 客戶端使用這種方法。
例子2. 文件上傳表單
可以如下建立一個特殊的表單來支持文件上傳:
- ___FCKpd___0
以上范例中的 __URL__ 應該被換掉,指向一個真實的 PHP 文件。
全局變量 $_FILES 自 PHP 4.1.0 起存在(在更早的版本中用 $HTTP_POST_FILES 替代)。此數組包含有所有上傳的文件信息。以上范例中 $_FILES 數組的內容如下所示。我們假設文件上傳字段的名稱如上例所示,為 userfile。名稱可隨意命名。
- $_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 版本中增加的。文件被上傳後,默認地會被儲存到服務端的默認臨時目錄中,除非 php.ini 中的 upload_tmp_dir 設置為其它的路徑。服務端的默認臨時目錄可以通過更改 PHP 運行環境的環境變量 TMPDIR 來重新設置,但是在 PHP 腳本內部通過運行 putenv() 函數來設置是不起作用的。該環境變量也可以用來確認其它的操作也是在上傳的文件上進行的。