php上傳檔案詳解

2021-09-01 18:03:47 字數 3720 閱讀 3317

上傳檔案

功能由兩個部分

組成,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 屬性規定了...