본문 바로가기
아무리 생각해도 백임/php

[Php] ajax로 파일 업로드

by seung_nari 2022. 11. 29.

php는 과연 프론트일까 백일까... 백이라고 생각하고 백이 맞는 것 같고 다들 백이라고 하는데,

꼭 하나 둘씩 프론트라 해서...

 

html 소스

<form id="file_form" name="upload_form" method="post" enctype="multipart/form-data">
    <table border="0">
        <tr>
            <td>파일&nbsp;<input type="file" name="uploads_file" id="uploads_file"></td>
            <td>업로드&nbsp;<input type="button" onClick="file_upload(this.form)" value="submit" /></td>
            <input type="hidden" name="uploads_dir">
            <input type="hidden" name="filename">
        </tr>
	</table>
</form>

<script>
	var formData

	function file_upload(frm){

		var fileCheck = frm.uploads_file.value;

		if(!fileCheck){
			alert("업로드할 파일을 선택하세요.");
			return false;
		}

		formData = new FormData(frm);
	
		$.ajax({
			url: './fileupload_ok.php', // url where upload the image
			type : 'POST',
			dataType : 'html',
			enctype : 'multipart/form-data',
			processData : false,
			contentType : false,
			data : formData,
			async : false,
			success : function(data){
				console.log(data)
			}
		});         	
	}
</script>

 

fileupload_ok.php

 

<?
    print_r($_FILES);
    print_r("\n\n");

    if($_FILES['uploads_file']['size'] > 0){

        $file_tmp_name = $_FILES['uploads_file']['tmp_name'];

        $upload_dir = "../upload_files/agent";

        if(!is_dir($upload_dir)){
            mkdir($upload_dir, 0777); // 폴더가 없으면 만들고
            chmod($upload_dir, 0777); // 만들었으면 권한 변경
        }

        $save_filename = $upload_dir."/".$_FILES['uploads_file']['name'];

        $file_upload = move_uploaded_file($file_tmp_name, $save_filename);

        echo $file_upload; // 1이여야 성공
    } else {
        echo "failed";
    }
?>

 

혹시나 안만들어진다면

 

$upload_dir의 상위 폴더 권한을 확인해주시면 됩니다:)

댓글