카테고리 없음

PHP 파일 업로드

되꼬다음 2020. 11. 6. 16:09
반응형

* 파일 업로드 폼

<script type="text/javascript">

function check_form()
{
	// 업로드할 수 있는 확장자 
	var ext_array = new Array("txt", "hwp", "doc", "docs", "xls", "xlsx", "ppt", "pptx", "jpg", "png", "gif");
	var user_file = document.getElementByid("user_file").value;
	
	if(user_file == "")
	{
		alert("파일을 선택하세요.");
		return false;
	}
	
	var ext = user_file.substring(user_file.lastIndexOf("."), user_file.length).toLowerCase();
	var ext_check = false;

	for(var i = 0; i < ext_array.length; i++)
	{
		if(ext == ext_array[i]) 
		{
			ext_check = true;
			break;
		}
	}

	if(ext_check == false) 
	{
		alert("업로드 할 수 없는 파일입니다.");
		return false;
	}

	return true;
}
</script>


<form name="upload_form" method="post" action="upload.php" enctype="multipart/form-data" onsubmit="return check_form()">
<input type="file" name="user_file">
<input type="submit" value="파일 업로드">
</form>

 

* 파일 업로드 처리

<?

if(isset($_FILES["user_file"] && $_FILES["user_file"]["name"] != "")
{
	$upload_dir = "/www/data/";

	// 5메가 제한
	$max_file_size = 5242880;

	$ext_array = array("txt", "hwp", "doc", "docs", "xls", "xlsx", "ppt", "pptx", "jpg", "png", "gif");
	$ext = substr($_FILES["name"], strrpos($_FILES["name"], ".") + 1);

        // 확장자 체크
	if(!in_array($ext, $ext_array))
	{
		echo "업로드 할 수 없는 파일입니다.";
		exit;
	}

	// 파일 크기 체크
	if($_FILES["size"] >= $max_file_size) 
	{
		echo "5MB 까지 업로드 가능합니다.";
		exit;
	}

	// 파일명 변경
	$save_file_name = md5(microtime()) . "." . $ext;

	if(move_uploaded_file($file["tmp_name"], $upload_dir . $save_file_name)) 
	{
		// 보안을 위해 읽기만 가능하게..
		chmod($upload_dir . $save_file_name, 0404);
		echo "등록 되었습니다.";
	}
	else
	{
		echo "등록 도중 오류가 발생하였습니다.";
	}
		
    }

} 
else 
{
	echo "파일을 선택하시기 바랍니다.";
}
?>

 

2020/11/11 - [분류 전체보기] - php 다중파일 업로드시 20개 이상 올라가지 않을 경우

2020/11/18 - [분류 전체보기] - php 엑셀파일 다운로드

반응형