php上傳檔案非常簡單,你需要乙個上傳的html檔案(以上範例中的 __url__ 應該被換掉,指向乙個真實的 php 檔案。max_file_size 隱藏字段(單位為位元組)必須放在檔案輸入字段之前,其值為接收檔案的最大尺寸。這是對瀏覽器的乙個建議,php 也會檢查此項。在瀏覽器端可以簡單繞過此設定,因此不要指望用此特性來阻擋大檔案。實際上,php 設定中的上傳檔案最大值是不會失效的。但是最好還是在表單中加上此專案,因為它可以避免使用者在花時間等待上傳大檔案之後才發現檔案過大上傳失敗的麻煩。
注意: 要確保檔案上傳表單的屬性是 enctype="multipart/form-data",否則檔案上傳不了。
全域性變數 $_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() 函式來設定是不起作用的。該環境變數也可以用來確認其它的操作也是在上傳的檔案上進行的。
例 39.2. 使檔案上傳生效
請查閱函式 is_uploaded_file() 和 move_uploaded_file() 以獲取進一步的資訊。以下範例處理由表單提供的檔案上傳。
接受上傳檔案的 php 指令碼為了決定接下來要對該檔案進行哪些操作,應該實現任何邏輯上必要的檢查。例如可以用 $_files['userfile']['size'] 變數來排除過大或過小的檔案,也可以通過 $_files['userfile']['type'] 變數來排除檔案型別和某種標準不相符合的檔案,但只把這個當作一系列檢查中的第一步,因為此值完全由客戶端控制而在 php 端並不檢查。自 php 4.2.0 起,還可以通過 $_files['userfile']['error'] 變數來根據不同的錯誤**來計畫下一步如何處理。不管怎樣,要麼將該檔案從臨時目錄中刪除,要麼將其移動到其它的地方。
如果表單中沒有選擇上傳的檔案,則 php 變數 $_files['userfile']['size'] 的值將為 0,$_files['userfile']['tmp_name'] 將為空。
如果該檔案沒有被移動到其它地方也沒有被改名,則該檔案將在表單請求結束時被刪除。
例 39.3. 上傳一組檔案
php 的 html 陣列特性甚至支援檔案型別。<?php
foreach ($_files["pictures"]["error"] as $key => $error)
}?>
PHP上傳檔案實現
實現 見下。upload.html upload.php uploaddir files 設定檔案儲存目錄 注意包含 type array jpg gif bmp jpeg png 設定允許上傳檔案的型別 獲取檔案字尾名函式 function fileext filename 生成隨機檔名函式 fu...
php實現檔案上傳
前台是使用form表單,後台使用php實現上傳檔案 html部分 檔案上傳title charset utf 8 head action fileupload.php method post enctype multipart form data for file 上傳檔案label type fi...
php 檔案上傳校驗 php實現檔案上傳基本驗證
html部分 檔案上傳 php服務端部分 header content type text html charset utf 8 預定義變數 print r files 可以顯示錯誤號,根據錯誤號來定位錯誤資訊 filename files myfile name type files myfile...