文件上傳
php檔案上傳
上傳檔案功能由兩個部分組成,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標籤中type="file",表示把輸入當作檔案來處理。
2.Enctype規定了在提交這個表單時要使用哪種內容類型。在表單需要二進位資料時,例如文件內容,請使用"multipart/form-data",如果要上傳文件,這個屬性是必要的。
更多關於enctype的內容請參考《HTML <form> 標籤的 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. 全域變數$_FILE
此陣列包含有所有上傳的檔案資訊。
以我們假設檔案上傳欄位的名稱如上例所示,為 img。則
$_FILES['img']['name']
客戶端上傳的檔案的原名稱。
$_FILES['img']['type']
檔案的 MIME 類型,如果瀏覽器提供此資訊的話。一個例子是“image/gif”。不過此 MIME 類型在 PHP 端並沒有檢查,因此不要想當然認為有這個值。 $_FILES['img']['size']:已上傳檔案的大小,單位為位元組。
$_FILES['img']['size']
已上傳檔案的大小,單位為位元組。
$_FILES['img']['tmp_name']
檔案被上傳後在服務端儲存的暫存檔案名稱。
$_FILES['img']['error']
和該檔案上傳相關的錯誤代碼。
2. 關於錯誤碼
$_FILES['img']['error']有下列幾種型別
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,沒有檔案上傳。
UPLOAD_ERR_NO_TMP_DIR
其值為 6,而找不到臨時資料夾。 PHP 4.3.10 與 PHP 5.0.3 引進。
UPLOAD_ERR_CANT_WRITE
其值為 7,檔案寫入失敗。 PHP 5.1.0 引進。