搜尋
首頁每日程式設計PHP知識PHP實作多個檔案上傳的簡單方法有哪些? (圖文+影片)

本篇文章將為大家介紹關於PHP實作多個檔案上傳的一些簡單方法。

在這篇知識內容介紹之前,我們在前面的文章【PHP檔案上傳方法詳解及其資訊解析】中已經為大家詳細介紹了php實作單一檔案上傳的具體方法,那麼這篇文章和今天要介紹的知識點是有關聯的,需要的朋友可以先參考學習下。

下面我們就透過具體的程式碼範例,為大家介紹PHP實作多檔案上傳的一些簡單方法。

第一種方法:利用單一檔案上傳方法

#一段簡單的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>

程式碼效果如下圖:

PHP實作多個檔案上傳的簡單方法有哪些? (圖文+影片)

如圖我們選擇上傳了三個文件,然後我們再將文件上傳給upload.php文件中,PHP程式碼如下:

<?php
echo "<pre class="brush:php;toolbar:false">";
var_dump($_FILES);

那麼我們繼續透過瀏覽器存取結果如下:

PHP實作多個檔案上傳的簡單方法有哪些? (圖文+影片)

這裡我們得到了圖中的二維數組,如果我們想要進行多文件上傳就需要透過foreach循環來實現。

那麼upload.php完整程式碼如下:

<?php
echo "<pre class="brush:php;toolbar:false">";
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;
        }
    }
}

最後我們選擇多個檔案上傳,結果就如下圖所示:

PHP實作多個檔案上傳的簡單方法有哪些? (圖文+影片)

PHP實作多個檔案上傳的簡單方法有哪些? (圖文+影片)

此時已經成功實作多個檔案上傳的操作了。

第二種方法:利用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>

此段程式碼效果如下圖:

PHP實作多個檔案上傳的簡單方法有哪些? (圖文+影片)

#在這裡的form表單中我們用到了HTML 5中的multiple 屬性,這個屬性表示輸入欄位可選擇多個值,也就是選擇該屬性時,此欄位可以接受多個值。 multiple是我們實作多檔案上傳的一個重要屬性。同時我們將input中name名設定為一個file[] 陣列。

那麼我們再選擇多個檔案上傳,如下圖:

PHP實作多個檔案上傳的簡單方法有哪些? (圖文+影片)

PHP實作多個檔案上傳的簡單方法有哪些? (圖文+影片)

#如圖我們選擇了三張圖片,然後再用以下upload.php檔來接收三個資料。

upload.php程式碼範例如下:

<?php
echo "<pre class="brush:php;toolbar:false">";
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;
        }
    }
}

此時上傳三張檔案後,透過瀏覽器訪問,結果如下圖:

PHP實作多個檔案上傳的簡單方法有哪些? (圖文+影片)

我們從圖中可以看到,上傳檔案資訊以三維數組形式展現,其中三個圖片的名稱、類型、臨時儲存的位置路徑、大小等等資訊都分別放在了一個數組中。

然而我們可以發現upload.php這個檔案中的資訊解析方法對於用multiple屬性上傳來的檔案並沒有產生效果。

那麼本篇文章就先給大家介紹PHP使用multiple屬性實現多文件上傳的這兩種簡單方法,在後續的文章中我們會繼續為大家詳細介紹,PHP實現多文件上傳及信息解析也就是第二種方法的詳解!

想了解更多PHP相關知識,大家可以關注PHP中文網PHP影片教學。歡迎大家來參考學習!

以上是PHP實作多個檔案上傳的簡單方法有哪些? (圖文+影片)的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

SublimeText3 英文版

SublimeText3 英文版

推薦:為Win版本,支援程式碼提示!

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

SecLists

SecLists

SecLists是最終安全測試人員的伙伴。它是一個包含各種類型清單的集合,這些清單在安全評估過程中經常使用,而且都在一個地方。 SecLists透過方便地提供安全測試人員可能需要的所有列表,幫助提高安全測試的效率和生產力。清單類型包括使用者名稱、密碼、URL、模糊測試有效載荷、敏感資料模式、Web shell等等。測試人員只需將此儲存庫拉到新的測試機上,他就可以存取所需的每種類型的清單。

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

將Eclipse與SAP NetWeaver應用伺服器整合。