上傳檔案
功能由兩個部分
組成,html
頁面和php
處理部分
。html
頁面主要是讓使用者選
擇所要上傳的檔案
,php部分讓
我們可以把檔案
儲存到伺服器的指定目錄。
一.html
部分
上傳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
>
上傳demo:
說明:
1.input
標籤中type="file",
表明把輸入作為檔案來處理。2.
enctype規定了在提交這個表單時要使用哪種內容型別
。在表單需要二進位制資料時,比如檔案內容,請使用"multipart/form-data"
,如果要上傳檔案,這個屬性是必要的。
更多關於
enctype
的內容參見《html
說明:1.input
標籤中type="file",
表明把輸入作為檔案來處理。2.
enctype規定了在提交這個表單時要使用哪種內容型別
。在表單需要二進位制資料時,比如檔案內容,請使用"multipart/form-data"
,如果要上傳檔案,這個屬性是必要的。
更多關於
enctype
的內容參見《html 標籤的 enctype 屬性》
二.php部分
upload.php
[php]view plain
copy
print?
<?php
$dst_dir='/data/upload/';
if($_files['img']['name']!='')
else
else}}
else
<?php
$dst_dir = '/data/upload/';
if ($_files['img']['name'] != '')
else
else
}}else
說明:
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
,找不到臨時資料夾。
php4.3.10
和php5.0.3
引進。upload_err_cant_write
其值為7
,檔案寫入失敗。
php5.1.0
引進。3.move_uploaded_file
檔案被上傳後,預設地會被儲存到服務端的預設臨時目錄中(除非php.ini中的upload_tmp_dir設定為其它的路徑),檔名是隨機的。如果該檔案沒有被移動到其它地方也沒有被改名,則該檔案將在表單請求結束時被刪除。因此需要通過move_uploaded_file移動臨時檔案。
經實驗copy也能完成
move_uploaded_file
的功能,為啥要用
move_uploaded_file
呢?有說法是
move_uploaded_file
會對上傳檔案做一些檢查,防止
copy
引起的一些安全漏洞。但具體
copy
anyway,既然
php給了特定的函式,必然有一定道理,先這麼用吧。
三.安全檢查
可以考慮通過$_files['img']['size']和$_files['img']['type']對上傳的檔案做一些安全檢查,比如限定上傳型別,上傳檔案的大小等。
附:《與檔案上傳有關的php配置引數》
**:
PHP檔案上傳例項詳解!!!
最近為了象牙,有點不務正業的嫌疑,經過最近一段時間的瘋狂灌水終於拿到了象牙,嘿嘿,今天重出江湖,想到論壇似乎沒什麼為新手講的上傳例項,而這部分是很常用的,故今天獻醜為各位新鳥詳細講解下怎樣實現檔案上傳。用過asp的都知道,asp的上傳要麼購買官方的元件實現,要麼就編寫複雜的上傳類,是相當麻煩的,這裡...
php檔案上傳原理詳解
1 檔案上傳原理 將客戶端的檔案上傳到伺服器,再將伺服器的臨時檔案上傳到指定目錄 2 客戶端配置 3 伺服器端配置 4 錯誤資訊說明 5 客戶端限制 6 在客戶端的限制,使用者可在網頁上修改 後上傳,故無實際意義。應在伺服器端加以限制 7 完整 如下 upload.php 1 doctype htm...
php mysql上傳檔案 PHP 檔案上傳
通過 php,可以把檔案上傳到伺服器。建立乙個檔案上傳表單 允許使用者從表單上傳檔案是非常有用的。請看下面這個供上傳檔案的 html 表單 芝麻教程 web3.xin 檔名 將以上 儲存到 form.html 檔案中。有關上面的 html 表單的一些注意項列舉如下 標籤的 enctype 屬性規定了...