文件上傳
php檔案上傳
? 上傳檔案功能由兩個(gè)部分組成,HTML頁面和PHP處理部分。 HTML頁面主要是讓使用者選擇要上傳的文件,php部分讓我們可以把文件儲存到伺服器的指定目錄。
?
一. HTML部分
upload.html
<html> <head> <meta content="text/html; charset=utf-8" http-equiv="Content-Type"> </head> <body> 上傳Demo: <form action="upload.php" method="post" enctype="multipart/form-data"> <input type="file" name="img" /> <input type="submit" name="submit" value="上傳" /> </form> </body> </html>
說明:
1.Input標(biāo)籤中type="file",表示把輸入當(dāng)作檔案來處理。
2.Enctype規(guī)定了在提交這個(gè)表單時(shí)要使用哪種內(nèi)容類型。在表單需要二進(jìn)位資料時(shí),例如文件內(nèi)容,請使用"multipart/form-data",如果要上傳文件,這個(gè)屬性是必要的。
更多關(guān)於enctype的內(nèi)容請參考《HTML <form> 標(biāo)籤的 enctype 屬性》
二. php部分
upload.php
<?php $DST_DIR = '/data/upload/'; if ($_FILES['img']['name'] != '') { if ($_FILES['img']['error'] > 0) { echo "上傳失敗"; } else { if (move_uploaded_file($_FILES['img']['tmp_name'], $DST_DIR.$_FILES['img']['name'])) { echo "上傳成功"; } else { echo "上傳失敗"; } } } else { echo "請上傳文件"; }
?
說明:
1.?全域變數(shù)$_FILE
此陣列包含有所有上傳的檔案資訊。
以我們假設(shè)檔案上傳欄位的名稱如上例所示,為?img。則
$_FILES['img']['name']
客戶端上傳的檔案的原名稱。
$_FILES['img']['type']
檔案的?MIME?類型,如果瀏覽器提供此資訊的話。一個(gè)例子是“image/gif”。不過此?MIME?類型在?PHP?端並沒有檢查,因此不要想當(dāng)然認(rèn)為有這個(gè)值。 $_FILES['img']['size']:已上傳檔案的大小,單位為位元組。
$_FILES['img']['size']
已上傳檔案的大小,單位為位元組。
$_FILES['img']['tmp_name']
檔案被上傳後在服務(wù)端儲存的暫存檔案名稱。
$_FILES['img']['error']
和該檔案上傳相關(guān)的錯(cuò)誤代碼。
2.?關(guān)於錯(cuò)誤碼
$_FILES['img']['error']有下列幾種型別
UPLOAD_ERR_OK
其值為?0,沒有錯(cuò)誤發(fā)生,檔案上傳成功。
UPLOAD_ERR_INI_SIZE
其值為?1,上傳的檔案超過了?php.ini?中?upload_max_filesize選項(xiàng)限制的值。
UPLOAD_ERR_FORM_SIZE
其值為?2,上傳檔案的大小超過了?HTML?表單中?MAX_FILE_SIZE?選項(xiàng)指定的值。
UPLOAD_ERR_PARTIAL
其值為?3,檔案只有部分被上傳。
UPLOAD_ERR_NO_FILE
其值為?4,沒有檔案上傳。
UPLOAD_ERR_NO_TMP_DIR
其值為?6,而找不到臨時(shí)資料夾。 PHP?4.3.10?與?PHP?5.0.3?引進(jìn)。
UPLOAD_ERR_CANT_WRITE
其值為?7,檔案寫入失敗。 PHP?5.1.0?引進(jìn)。