PHP實現多文件上傳的一些簡單方法

 

 

 

 

 

下面咱們就經過具體的代碼示例,爲你們介紹PHP實現多文件上傳的一些簡單方法。php

第一種方法:利用單個文件上傳方法html

一段簡單的form表單代碼以下:數組

<!DOCTYPE html>

<html>

<head>

    <meta charset="UTF-8">

    <title>Title</title>

</head>

<body>

<form action="upload.php" method="post" enctype="multipart/form-data"> 選擇文件進行上傳: <input type="file" name="file1"> 選擇文件進行上傳: <input type="file" name="file2"> 選擇文件進行上傳: <input type="file" name="file3">

    <input type="submit" value="上傳">

</form>

</body>

</html>

代碼效果以下圖:瀏覽器

如圖咱們選擇上傳了三個文件,而後咱們再將文件上傳給upload.php文件中,PHP代碼以下:post

<?php echo "<pre>"; var_dump($_FILES);

那麼咱們繼續經過瀏覽器訪問結果以下:spa

這裏咱們獲得了圖中的二維數組,若是咱們想要進行多文件上傳就須要經過foreach循環來實現。code

那麼upload.php完整代碼以下:orm

<?php echo "<pre>"; var_dump($_FILES); $files = []; foreach ($_FILES as $fileInfo) { $files[] = upload_file($fileInfo); } var_dump($files); function upload_file($fileInfo, $upload = "./upload", $imagesExt = ['gif', 'png', 'jpg']) { if ($fileInfo['error'] === 0) { $ext = strtolower(pathinfo($fileInfo['name'], PATHINFO_EXTENSION)); if (!in_array($ext, $imagesExt)) { return "文件非法類型"; } if (!is_dir($upload)) { mkdir($upload, 0777, true); } $fileName = md5(uniqid(microtime(true), true)) . "." . $ext; $destName = $upload . "/" . $fileName; if (!move_uploaded_file($fileInfo['tmp_name'], $destName)) { return "文件上傳失敗!"; } return "文件上傳成功!"; } else { switch ($fileInfo['error']) { case 1:

                echo '上傳的文件超過了 php.ini 中 upload_max_filesize 選項限制的值'; break; case 2:

                echo '上傳文件的大小超過了 HTML 表單中 MAX_FILE_SIZE 選項指定的值'; break; case 3:

                echo '文件只有部分被上傳'; break; case 4:

                echo '沒有文件被上傳'; break; case 6:

                echo '找不到臨時文件夾'; break; case 7:

                echo '文件寫入失敗'; break; } } }

最後咱們選擇多個文件上傳,結果就以下圖所示:htm

此時已經成功實現多個文件上傳的操做了。
blog

第二種方法:利用HTML5中的multiple方法

上傳多文件的HTML界面的代碼示例以下:

 

<!DOCTYPE html>

<html lang="en">

<head>

    <meta charset="UTF-8">

    <title>Title</title>

</head>

<body>

<form action="upload.php" method="post" enctype="multipart/form-data"> 選擇文件進行上傳: <input type="file" name="file[]" multiple=""><br>

    <input type="submit" value="上傳">

</form>

</body>

</html>

此段代碼效果以下圖:

在這裏的form表單中咱們用到了HTML 5中的 multiple 屬性,這個屬性表示輸入字段可選擇多個值,也就是選擇該屬性時,此字段能夠接受多個值。multiple是咱們實現多文件上傳的一個重要屬性。同時咱們將input中name名設置爲一個file[] 數組。

那麼咱們再選擇多個文件上傳,以下圖:

 

 

如圖咱們選擇了三張圖片,而後再用以下upload.php文件來接收三個數據。

upload.php代碼示例以下:

<?php echo "<pre>"; var_dump($_FILES); $files = []; foreach ($_FILES as $fileInfo) { $files[] = upload_file($fileInfo); } var_dump($files); function upload_file($fileInfo, $upload = "./upload", $imagesExt = ['gif', 'png', 'jpg']) { if ($fileInfo['error'] === 0) { $ext = strtolower(pathinfo($fileInfo['name'], PATHINFO_EXTENSION)); if (!in_array($ext, $imagesExt)) { return "文件非法類型"; } if (!is_dir($upload)) { mkdir($upload, 0777, true); } $fileName = md5(uniqid(microtime(true), true)) . "." . $ext; $destName = $upload . "/" . $fileName; if (!move_uploaded_file($fileInfo['tmp_name'], $destName)) { return "文件上傳失敗!"; } return "文件上傳成功!"; } else { switch ($fileInfo['error']) { case 1:

                echo '上傳的文件超過了 php.ini 中 upload_max_filesize 選項限制的值'; break; case 2:

                echo '上傳文件的大小超過了 HTML 表單中 MAX_FILE_SIZE 選項指定的值'; break; case 3:

                echo '文件只有部分被上傳'; break; case 4:

                echo '沒有文件被上傳'; break; case 6:

                echo '找不到臨時文件夾'; break; case 7:

                echo '文件寫入失敗'; break; } } }

 

咱們從圖中能夠看到,上傳文件信息以三維數組形式展示,其中三個圖片的名稱、類型、臨時存儲的位置路徑、大小等等信息都分別放在了一個數組中。

然而咱們能夠發現upload.php這個文件中的信息解析方法對於用multiple屬性上傳來的文件並無產生效果。

那麼本篇文章就先給你們介紹PHP使用multiple屬性實現多文件上傳的這兩種簡單方法,

相關文章
相關標籤/搜索