本篇文章將為大家介紹關於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中文網其他相關文章!