PHP 多個檔案上傳

2021-09-06 19:16:45 字數 3262 閱讀 7190

關鍵函式:

is_uploaded_file():用於判斷指定的檔案是否是通過 http post 上傳的,如果是則返回 true。用於防止潛在的攻擊者對原本不能通過指令碼互動的檔案進行非法管理,這可以用來確保惡意的使用者無法欺騙指令碼去訪問本不能訪問的檔案。

move_uploaded_file():檔案上傳後,首先會儲存在伺服器的臨時目錄中,可以是該函式將上傳的檔案移動到新位置。與 copy() 和 move() 相比,該函式還有一種額外的功能,檢查並確保由第乙個引數 filename 指定的檔案,是否是合法的上傳檔案( 即通過 php 的 http post 上傳機制所上傳的 )。如果檔案合法,則將其移動為由第二個引數 destination 指定的檔案。如果 filename 不是合法的上傳檔案,不會出現任何操作,將返回 false。如果 filename 是合法的上傳檔案,但出於某些原因無法移動,不會出現任何操作,也將返回false。此外還將發出一條警告。若成功則返回true。

其他函式:

array_pop():彈出並返回陣列中的最後乙個元素,並將 array 的長度減1。案例中用於取出檔案字尾。

list():用陣列中的元素為一組變數賦值。

多個檔案上傳只需要在單個檔案上傳的基礎上,在原來的二維陣列 $_files 之外進行一次迴圈。

html:

doctype html

>

<

html

>

<

head

>

<

meta

charset

="utf-8"

>

<

title

>檔案上傳

title

>

head

>

<

body

>

<

form

action

="upload.php"

method

="post"

enctype

="multipart/form-data"

>

<

input

type

="hidden"

name

="max_file_size"

value

="1000000"

>

選擇檔案1:

<

input

type

="file"

name

="myfile"

><

br>

選擇檔案2:

<

input

type

="file"

name

="myfile"

><

br>

選擇檔案3:

<

input

type

="file"

name

="myfile"

><

br>

<

input

type

="submit"

value

="上傳檔案"

>

form

>

body

>

html

>

圖1

圖2

允許上傳的檔案格式

$size = 1000000; //

設定允許大小1m以內的檔案

$path = "./uploads"; //

設定上傳後儲存檔案的路徑

//判斷檔案是否可以上傳到伺服器 $_files['myfile'][error]為0表示成功

//迴圈

for( $i = 0;$i

< count($_files['myfile']['error']);$i++)

}//判斷上傳的檔案是否為允許的檔案型別,通過檔案的字尾名

//array_pop 彈出並返回陣列中的最後乙個元素,並將array的長度減1

$hz[$i] = array_pop(explode(".",$_files['myfile']['name'][$i

]));

if(!in_array($hz[$i],$allowtype

)),不是允許的檔案型別!");

}/*也可通過獲取上傳檔案的mime型別中的主型別和子型別,來限制檔案上傳的型別

list($maintype,$subtype) = explode("/",$_files['myfile']['type']);

if($maintype == "text")

*///

判斷上傳的檔案是否允許大小

if($_files['myfile']['size'][$i]>$size

)");

}//為了系統安全,同時也為了同名檔案不被覆蓋,上傳後將檔名使用系統定義

$filename[$i] = date("ymdhis").rand(100,999).".".$hz[$i

];

//判斷是否為上傳檔案

if(is_uploaded_file($_files['myfile']['tmp_name'][$i

])) }

else

不是乙個合法檔案");

}//如果檔案上傳成功

$filesize[$i] = $_files['myfile']['size'][$i]/1024;

echo "檔案上傳成功,儲存在目錄中,檔案大小為kb

";}頁面顯示:

檔案87d11a09d24848fa3ac763fe.jpg上傳成功,儲存在目錄./uploads中,檔案大小為34.60546875kb

檔案0ef5e0fef0adab0f5c6008a2.jpg上傳成功,儲存在目錄./uploads中,檔案大小為37.810546875kb

檔案2dbda88c96801dd6f11f3617.jpg上傳成功,儲存在目錄./uploads中,檔案大小為168.0478515625kb

php上傳多個檔案

1 在表單頁面動態生成多個文i件提交框,這裡注意一下,多個檔案提交框的名字要設定為陣列,否則只有乙個檔案會上傳。也可以不同的檔案提交框用不同的名字,然後在後端接收的時候,files name vary 不同的檔案用不同的name vary,也是可以的。此時在 files陣列構造方式是這樣 files...

PHP接收多個上傳檔案

這星期一直再搞php,涉及到檔案上傳的部分有些遺忘,這裡記錄一下 用html的表單模擬乙個檔案上傳的post請求,如下 注意 要確保檔案上傳表單的屬性是 enctype multipart form data 否則檔案上傳不了 首先,需要解釋一下php的全域性變數 files,此陣列包含了所有上傳的...

Spring webflow 上傳多個檔案

上篇講了上傳單個檔案,在上篇的基礎上稍作修改就可以上傳多個檔案了。首先,實體類要修改,使用list來儲存多個檔案 component public class goodsentity implements serializable public void setimages listimages 上...