PHP에서 여러 이미지 업로드

Olorunfemi Akinlua 2024년2월15일
  1. PHP의 여러 파일 업로드에 대한 양식 작업 및 $_FILES 이해
  2. move_uploaded_file()을 사용하여 PHP에서 여러 이미지 업로드
PHP에서 여러 이미지 업로드

PHP 애플리케이션, 특히 사용자 기반 애플리케이션 내에서 때때로 여러 파일을 한 번에 업로드해야 할 수도 있습니다. 그리고 PHP 기능과 HTML 기능을 사용하면 매우 가능하고 쉽게 할 수 있습니다.

이를 가능하게 하려면 코드베이스를 구성하는 방식에 따라 HTML 파일 또는 섹션 내에서 양식 작업을 지정한 다음 내장 함수를 사용하여 작업을 처리해야 합니다.

이 기사에서는 양식 입력에서 원하는 파일 지정, 모든 사용자 선택 파일 처리, 필요한 위치로 업로드 또는 이동에 대한 컨텍스트를 제공하는 PHP에서 여러 이미지를 업로드하는 방법을 배웁니다.

PHP의 여러 파일 업로드에 대한 양식 작업 및 $_FILES 이해

사용자가 HTML 양식에 입력을 하면 POST 메서드를 사용하여 입력(텍스트에서 파일로)을 PHP 애플리케이션이 있는 서버 측으로 보냅니다.

<form method='post' action='' enctype='multipart/form-data'>

enctype='multipart/form-data' 부분은 양식 데이터가 인코딩되는 방법을 지정하며 양식 내에서 파일 업로드를 사용할 때 필요합니다.

파일 업로드를 위해서는 입력 유형 file과 지정된 이름(사용자가 결정한 이름일 수 있음) file이 필요합니다.

<input type="file" name="file" id="file">

다중 파일 업로드의 경우 여전히 입력 유형 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>

isset() 함수를 사용하여 $_POST[] 변수가 설정되었는지 확인하고 중요한 변수를 초기화하고 파일 업로드에 필요한 확장자를 설정합니다.

if (isset($_POST["imgSubmit"])) {
		$errors = [];
		$uploadedFiles = [];
		$extension = array("jpeg", "jpg", "png");
		$UploadFolder = "images";

그런 다음 $_FILES[] 변수를 통해 처리된 여러 이미지를 반복한 다음 pathinfo()를 사용하여 확장자를 확인하고 true인 경우 이미지를 지정된 폴더로 이동합니다. $UploadFoldermove_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 파일.

브라우저에 제공되는 PHP 파일

이미지를 선택하고 이미지를 업로드합니다.

업로드할 이미지 선택

그런 다음 업로드된 파일을 표시합니다.

업로드된 파일 표시

업로드된 이미지:

업로드된 이미지

이미지가 아닌 파일을 선택하면 오류가 발생합니다.

오류

Olorunfemi Akinlua avatar Olorunfemi Akinlua avatar

Olorunfemi is a lover of technology and computers. In addition, I write technology and coding content for developers and hobbyists. When not working, I learn to design, among other things.

LinkedIn

관련 문장 - PHP Upload