php小編魚仔為您介紹如何在php中上傳多個圖像。在網站開發中,經常需要實現批量上傳圖片的功能,為了提高用戶體驗和效率,上傳多個圖像是一個常見需求。php提供了豐富的函數和技術來實現這一功能,包括使用表單、處理上傳文件、循環處理多個文件等。通過本文的指導,您將學會如何在php中輕松上傳多個圖像,為您的網站添加更多互動和創意元素。
為了使之成為可能,我們需要根據您構建代碼庫的方式在我們的 HTML 文件或部分中指定表單操作,然后使用內置函數來處理該操作。
在本文中,我們將學習如何在 PHP 中上傳多個圖像,這為我們提供了從表單輸入中指定所需文件、處理所有用戶選擇的文件以及上傳或移動到所需位置的上下文。
了解 PHP 中多個文件上傳的表單操作和 $_FILES
當用戶將任何輸入放入 HTML 表單時,我們使用 POST 方法將任何輸入(從文本到文件)發送到我們的 PHP 應用程序所在的服務器端。
<fORM method='post' action='' enctype='multipart/form-data'>
登錄后復制
enctype='multipart/form-data'
部分指定表單數據的編碼方式,當我們在表單中使用文件上傳時是必需的。
對于文件上傳,我們需要輸入類型文件和指定名稱(可以是您決定的任何名稱),文件。
<input type="file" name="file" id="file">
登錄后復制
對于多文件上傳,我們仍然需要輸入類型文件,但現在不同的指定名稱 file[]
和添加的屬性 multiple。 添加 []
表示輸入字段可以處理多個文件。
<input type="file" name="files[]" multiple/>
登錄后復制
在服務器端,全局變量 $_FILES
是一個關聯數組,其中包含通過 Http POST 方法上傳的文件,使我們能夠適當地處理文件。
<?php $_FILES["files"]
登錄后復制
使用 move_uploaded_file() 在 PHP 中上傳多張圖片
現在我們了解了基礎知識,我們需要上傳多個文件。 讓我們創建 PHP 表單來上傳多張圖片。
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Multiple Image Upload</title> </head> <body> <form method="post" enctype="multipart/form-data" name="formUploadFile"> <label>Select image(s) to upload:</label> <input type="file" name="files[]" multiple="multiple" /> <input type="submit" value="Upload File" name="imgSubmit" /> </form> <?php if (isset($_POST["imgSubmit"])) { $errors = []; $uploadedFiles = []; $extension = array("jpeg", "jpg", "png"); $UploadFolder = "images"; $counter = 0; foreach ($_FILES["files"]["tmp_name"] as $key => $tmp_name) { $temp = $_FILES["files"]["tmp_name"][$key]; $name = $_FILES["files"]["name"][$key]; if (empty($temp)) { break; } $counter++; $UploadOk = true; $ext = pathinfo($name, PATHINFO_EXTENSION); if (in_array($ext, $extension) == false) { $UploadOk = false; array_push($errors, $name . " isn't an image."); } if ($UploadOk == true) { move_uploaded_file($temp, $UploadFolder . "/" . $name); array_push($uploadedFiles, $name); } } if ($counter > 0) { if (count($errors) > 0) { echo "<b>Errors:</b>"; echo "<br/><ul>"; foreach ($errors as $error) { echo "<li>" . $error . "</li>"; } echo "</ul><br/>"; } if (count($uploadedFiles) > 0) { echo "<b>Uploaded Files:</b>"; echo "<br/><ul>"; foreach ($uploadedFiles as $fileName) { echo "<li>" . $fileName . "</li>"; } echo "</ul><br/>"; echo count($uploadedFiles) . " iamge(s) are successfully uploaded."; } } else { echo "Please, Select image(s) to upload."; } } ?> </body> </html>
登錄后復制
檢查 $_POST[]
變量是否使用 isset()
函數設置,初始化重要變量,并設置文件上傳所需的擴展名。
if (isset($_POST["imgSubmit"])) { $errors = []; $uploadedFiles = []; $extension = array("jpeg", "jpg", "png"); $UploadFolder = "images";
登錄后復制
之后,我們循環遍歷已通過 $_FILES[]
變量處理過的多個圖像,然后使用 pathinfo()
檢查擴展名,如果為真,我們將圖像移動到指定文件夾 $UploadFolder 使用 move_uploaded_file()
函數,并將圖像的名稱推送到 $uploadedFiles 變量。
foreach ($_FILES["files"]["tmp_name"] as $key => $tmp_name) { $temp = $_FILES["files"]["tmp_name"][$key]; $name = $_FILES["files"]["name"][$key]; if (empty($temp)) { break; } $counter++; $UploadOk = true; $ext = pathinfo($name, PATHINFO_EXTENSION); if (in_array($ext, $extension) == false) { $UploadOk = false; array_push($errors, $name . " isn't an image."); } if ($UploadOk == true) { move_uploaded_file($temp, $UploadFolder . "/" . $name); array_push($uploadedFiles, $name); } }
登錄后復制
最后,我們顯示了存在的錯誤和上傳的文件。
if ($counter > 0) { if (count($errors) > 0) { echo "<b>Errors:</b>"; echo "<br/><ul>"; foreach ($errors as $error) { echo "<li>" . $error . "</li>"; } echo "</ul><br/>"; } if (count($uploadedFiles) > 0) { echo "<b>Uploaded Files:</b>"; echo "<br/><ul>"; foreach ($uploadedFiles as $fileName) { echo "<li>" . $fileName . "</li>"; } echo "</ul><br/>"; echo count($uploadedFiles) . " image(s) are successfully uploaded."; } } else { echo "Please, Select image(s) to upload."; }
登錄后復制
向瀏覽器提供的 PHP 文件。
選擇圖像并上傳圖像。
然后,顯示上傳的文件。
上傳的圖片:
如果您選擇的文件不是圖像,則會出現錯誤。