파일이 업로드 되기 위한 전체과정에 대하여 알아보려고 합니다. php는 파일업로드를 위해 관련된 다양한 함수 및 초변역변수 $_FILES를 제공합니다. 파일이 업로드되는 과정은 어떻게 될까요?

1. 사용자가 브라우저를 통해 파일 업로드
2. 전달된 폼 양식을 통해 서버로 파일 전송
3. 전송된 파일이 서버의 임시 위치에 저장


! 파일 업로드를 위해 필요한 폼 입력양식



<body>
<form enctype='multipart/form-data' action='/save.php' method='post'>
<input type='hidden' name='MAX_FILE_SIZE' value='10000' />
<input type='file' name='file' />
</form>
</body>


파일을 첨부하기 위한 폼양식은 다음과 같습니다.

위에 명시된 MAX_FILE_SIZE는 1만 byte를 나타내고 있지만 의도치 않게 변경되어 더 큰 파일이 업로드 될 수도 있음을 꼭 알아두시기 바랍니다. 사용자가 임의로 변경할 수도 있으니 서버 자체에 설정해 두는 것이 좋겠습니다. 참고로 단위는 바이트(byte)입니다.

input 태그를 통해 파일이 업로드 되면 실제로 파일이 업로드 되었는지 확인하는 과정이 필요합니다. 이때 is_uploaded_file() 함수를 사용해 확인할 수 있으며 파일이 업로드 되면 일시적으로 서버에 저장됩니다.

서버에 임시 저장된 파일은 브라우저가 종료되면 사라지기 때문에 실제로 저장하기 위해서는 move_uploaded_file() 함수를 사용합니다. 이 함수를 통해 서버에 저장된 파일을 원하는 위치 Ex) '/upload/' 에 저장할 수 있습니다. 추가적인 파일 첨부를 위해서도 이 함수를 이용할 수 있습니다.

참고로 form 태그에 method 속성값이 post로 되어있습니다... 패일을 전송할 경우 method를 get 방식으로 전송할 경우 첨부된 파일이 해당 파일, save.php로 정상적으로 전송되지 않기 때문에 꼭 post로 값을 설정하시기 바랍니다.