PHP實現多檔案上傳

2021-08-17 21:12:33 字數 2177 閱讀 2734

php檔案上傳流程

單擊提交按鈕,瀏覽器使用者將包含上傳檔案的表單資料提交給php處理程式

web伺服器和php預處理器首先判斷表單資料的大小是否超過php.ini配置檔案中的post_max_size選項設定的上限值。

若超過,php處理程式將無法得到任何表單資料,此時不僅上傳檔案失敗,而且表單控制項中填寫的資料也會提交失敗,也就是說:php處理程式預定義變數$_get、$_post、$_files將為空陣列。

若沒有超過,檔案上傳進入第3步檢驗。

檢驗表單中的檔案大小是否超過表單隱藏域max_file_size設定的上限值。

若超過,php預處理器返回狀態碼2,檔案上傳失敗。

若沒有超過,檔案上傳進入第4步檢驗。

(當有多個檔案進行上傳時,某個檔案上傳框導致的檔案上傳失敗,不會影響其他檔案上傳框的上傳結果)

檢驗表單中的檔案是否超過php.ini配置檔案中upload_max_filesize選項設定的上限值。

若超過,php預處理器返回狀態碼1,檔案上傳失敗。

若沒有超過,檔案上傳進入第5步檢驗。

php實現上傳檔案需要在php.ini配置檔案upload_tmp_dir選項定義的目錄中建立乙個與上傳檔案一一對應的臨時檔案(預設拓展名為tmp),上傳成功後,臨時檔案立即消失,此時php預處理器的返回狀態碼0。

但是有時由於某些原因(如max_execution_time選項設定過小或者網速慢等原因),上傳部分檔案後不再繼續上傳剩餘檔案,導致檔案上傳失敗,此時php預處理器返回狀態碼3

若通過,檔案上傳進入第6步檢驗。

實現檔案上傳的關鍵一步在於在臨時檔案消失前,需要將臨時檔案儲存到web伺服器或檔案伺服器。php提供的兩個函式:is_uploaded_file()函式和move_uploaded_file()函式,可以幫助完成這一步的工作

多個檔案上傳要注意的就是相同的name儲存的檔案內容是按照下面的形式放在陣列中的。是五個陣列,按照檔案的五個引數分別存放的,並非三個陣列。所以如果直接使用count($_files[』$mypicture』]),答案為5。

array (size=5)

'name' =>

array (size=3)

0 => string '1.txt' (length=5)

1 => string '2.txt' (length=5)

2 => string '3.txt' (length=5)

'type' =>

array (size=3)

0 => string 'text/plain' (length=10)

1 => string 'text/plain' (length=10)

2 => string 'text/plain' (length=10)

'tmp_name' =>

array (size=3)

0 => string 'd:\wamp64\tmp\phpc5e8.tmp' (length=25)

1 => string 'd:\wamp64\tmp\phpc5e9.tmp' (length=25)

2 => string 'd:\wamp64\tmp\phpc5ea.tmp' (length=25)

'error' =>

array (size=3)

0 => int 0

1 => int 0

2 => int 0

'size' =>

array (size=3)

0 => int 0

1 => int 0

2 => int 0

index.php檔案

filesystem檔案

<?php

if (empty($_post))

$arr = $_files['mypicture'];

$file =array();

for ($i=0; $i < count($arr['name']); $i++)

for ($i=0; $i < count($file); $i++)

}

?>

PHP實現多檔案上傳

php實現多檔案上傳,與單檔案上傳絕大部分是相同的,不過還是有區分的地方,主要有三點 一 前端頁面 可以出現多個檔案瀏覽按鈕,也可以設定檔案瀏覽按鈕可以選擇多個檔案。需要注意的是檔案瀏覽按鈕的名字是陣列,因為要求上傳多個檔案。二 如果上傳的是多個檔案,通過 files獲得的陣列是三維陣列 如果上傳的...

PHP實現多檔案上傳

charset utf 8 檔案上傳title head style color white background color 525d76 font size 22px text align center 檔案上傳h1 action upload.php method post enctype m...

PHP實現多檔案上傳筆記

總結 php檔案上傳的大概過程 通過表單中的檔案語提交上傳檔案,通過 files陣列處理檔案,通過is uploaded file 函式驗證上傳檔案,通過move uploaded file 函式完成檔案上傳.說明幾點 1 form表單的 enctype 屬性 form 表單的encrypt 屬性的...