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 文件。
選擇圖像并上傳圖像。
然后,顯示上傳的文件。
上傳的圖片:
如果您選擇的文件不是圖像,則會出現錯誤。






