PHP

php (파일 업로드)

조이키트 블로그 2023. 8. 29. 01:58
728x90
반응형

웹에서 파일을 업로드하려면 <form> 태그의 enctype 속성을 multipart/form-data로 설정해야 한다. 그리고 <input> 태그의 type 속성을 file로 설정해야 업로드할 파일을 선택하는 양식을 생성할 수 있다. name 속성을 upload로 설정하면 업로드한 파일이 $_POST["upload"] 배열에 저장된다.

<html>
    <head>
        <meta charset="utf-8">
    </head>
    <body>
        <form name="form1" method="post" action="view8.php" enctype="multipart/form-data">
            <ul>
                <li>이미지 업로드 : <input type="file" name="upload"></li>
                <li>설명 : <textarea name="comment" rows="3" cols="60"></textarea></li>
                <li><input type="submit" value="확인"></li>
            </ul>
        </form>
    </body>
</html>

업로드된 이미지에 대한 설명을 입력할 수 있는 텍스트 영역을 생성하기 위해 <textarea>태그를 사용하고 name 속성은 comment로 설정한다. <확인>을 클릭하면 view8.php 파일로 이동한다.

파일 선택을 하고 텍스트 영역에 이미지에 대한 설명을 입력한 다음 확인을 클릭하면 

다음과 같이 나타난다.

view8.php 파일의 소스 코드는 다음과 같다.

<html>
<head>
<meta charset="utf-8">
<link href="style.css" rel="stylesheet">
</head>
<body>
<?php
	$file_dir = "C:/xampp/htdocs/07/img/";
	$file_path = $file_dir.$_FILES["upload"]["name"];
	if(move_uploaded_file($_FILES["upload"]["tmp_name"], $file_path)) {
		$img_path = "img/".$_FILES["upload"]["name"];
?>
	<ul>
		<li><img src="<?= $img_path?>"></li>
		<li><?= $_POST["comment"]?></li>
	</ul>
<?php
	}
	else {
		echo "파일 업로드 오류가 발생했습니다!!!";
	}
?>
</body>
</html>

업로드된 이미지 파일을 저장할 경로가 $file_dir에 설정되어 있다.

$_FILES["upload"]["name"]은 업로드된 파일명을 나타낸다. 따라서 $file_path에는 저장할 폴더와 파일명을 포함한 경로가 저장된다.

move_uploaded_file($_FILES["upload"]["tmp_name"], $file_path)는 업로드된 파일을 설정한 파일 경로에 저장한다는 의미이다. 여기서 $_FILES["upload"]["tmp_name"]은 서버에 임시로 저장된 업로드된 파일명이고 $file_path는 업로드된 파일을 저장할 경로를 의미한다.

$img_path는 <img> 태그의 src 속성으로 설정한 폴더와 이미지 파일명을 포함한 경로를 의미한다.

$_POST["comment"]는 사용자가 텍스트 영역에 입력한 내용을 의미한다.

move_uploaded_file() 함수는 HTTP POST를 이용하여 업로드된 파일을 지정된 경로에 저장할 때 사용한다. 만약 해당 경로에 동일한 파일이 있으면 덮어쓰기를 한다.

728x90
반응형