本篇文章將為大家介紹關於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>
程式碼效果如下圖:
如圖我們選擇上傳了三個文件,然後我們再將文件上傳給upload.php文件中,PHP程式碼如下:
<?php echo "<pre class="brush:php;toolbar:false">"; var_dump($_FILES);
那麼我們繼續透過瀏覽器存取結果如下:
這裡我們得到了圖中的二維數組,如果我們想要進行多文件上傳就需要透過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; } } }
最後我們選擇多個檔案上傳,結果就如下圖所示:
此時已經成功實作多個檔案上傳的操作了。
第二種方法:利用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 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; } } }
此時上傳三張檔案後,透過瀏覽器訪問,結果如下圖:
我們從圖中可以看到,上傳檔案資訊以三維數組形式展現,其中三個圖片的名稱、類型、臨時儲存的位置路徑、大小等等資訊都分別放在了一個數組中。
然而我們可以發現upload.php這個檔案中的資訊解析方法對於用multiple屬性上傳來的檔案並沒有產生效果。
那麼本篇文章就先給大家介紹PHP使用multiple屬性實現多文件上傳的這兩種簡單方法,在後續的文章中我們會繼續為大家詳細介紹,PHP實現多文件上傳及信息解析也就是第二種方法的詳解!
想了解更多PHP相關知識,大家可以關注PHP中文網PHP影片教學。歡迎大家來參考學習!
以上是PHP實作多個檔案上傳的簡單方法有哪些? (圖文+影片)的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

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

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

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

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

熱門文章

熱工具

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

記事本++7.3.1
好用且免費的程式碼編輯器

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

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

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